PHP හි චෙක්බොක්ස් භාවිතයේ සූක්ෂම කරුණු
අපගේ පෝරමයේ ඇත්තේ චෙක්බොක්ස් එකක් පමණක් යැයි සිතන්න:
<form action="" method="GET">
<input type="checkbox" name="flag">
<input type="submit">
</form>
අපගේ පෝරමය සැකසීමේ කේතය මේ ආකාරයෙන් පෙනෙන බව සිතන්න:
<?php
if (!empty($_GET)) { // පෝරමය යැවූවා නම්
if (isset($_GET['flag'])) { // කෙළින්ම සලකුණු කර ඇත්නම්
echo 'සලකුණු කර ඇත';
} else {
echo 'සලකුණු කර නැත';
}
}
?>
අපට ප්රශ්නයක් ඇතිවේ - කෙළින්ම සලකුණු නොකර ඇත්නම්,
පෝරමයේ චෙක්බොක්ස් හැර වෙනත් මූලද්රව්ය නොමැති බැවින්,
$_GET හි හිස් අරාවක් පවතිනු ඇත. මෙයින් අදහස් වන්නේ
පෝරමය සැකසීමේ කේතයේ දී අපි පෝරමය යැවීම පරීක්ෂා කරන
පළමු if වෙත ඇතුළු නොවන බවයි.
මෙම ගැටළුව විසඳීම සඳහා විශේෂ උපක්රමයක් භාවිතා කරයි: අපගේ චෙක්බොක්ස් එකට සමාන නමක් සහිත සඟවා ඇති ආදානයක් සාදයි. මෙම අවස්ථාවේ දී, සඟවා ඇති ආදානයේ අගය ශුන්ය කර තබා, චෙක්බොක්ස් එකේ අගය එකක් කර තබයි:
<form action="" method="GET">
<input type="hidden" name="flag" value="0">
<input type="checkbox" name="flag" value="1">
<input type="submit">
</form>
මෙම අවස්ථාවේ දී පහත දේ සිදු වේ. චෙක්බොක්ස් සලකුණු කර නොමැති නම්, සේවාදායකය වෙත සඟවා ඇති ආදානයේ අගය පමණක් යවනු ලැබේ. චෙක්බොක්ස් සලකුණු කර ඇත්නම්, සේවාදායකය වෙත එක් නමක් සහිත අගයන් දෙකක් යවනු ලැබේ. නමුත්, චෙක්බොක්ස් අගය දෙවැන්න වන බැවින්, එය පළමු අගය අතිලේඛනය කරයි.
එබැවින්, දැන් අපගේ චෙක්බොක්ස් සේවාදායකය වෙත ශුන්යයක් හෝ එකක් යවනු ඇත:
<?php
var_dump($_GET['flag']); // '0' හෝ '1'
?>
මෙය අපගේ පරීක්ෂාවේ දී භාවිතා කරමු:
<?php
if (!empty($_GET)) {
if ($_GET['flag'] === '1') {
echo 'සලකුණු කර ඇත';
} else {
echo 'සලකුණු කර නැත';
}
}
?>
කෙළින්ම සලකුණක් භාවිතා කර, පරිශීලකයාගෙන් විමසන්න,
ඔවුන්ට දැනටමත් වයස 18 හෝ ඊට වැඩිදැයි. එසේ නම්,
ඔවුන්ට වෙබ් අඩවියට ප්රවේශ වීමට ඉඩ දෙන්න, එසේ නොමැති
නම් - ඉඩ නොදෙන්න.