PHP-তে চেকবক্স ব্যবহারের সূক্ষ্ম বিষয়াবলী

ধরি আমাদের ফর্মে শুধুমাত্র একটি চেকবক্স আছে:

html<form action="" method="GET">
  <input type="checkbox" name="flag">
  <input type="submit">
</form>

ধরি আমাদের ফর্ম প্রক্রিয়াকরণ কোডটি এইরকম দেখাচ্ছে:

html<?php
  if (!empty($_GET)) { // যদি ফর্ম জমা দেওয়া হয়
    if (isset($_GET['flag'])) { // যদি চেকবক্স চিহ্নিত করা হয়
      echo 'চিহ্নিত';
    } else {
      echo 'চিহ্নিত নয়';
    }
  }
?>

আমাদের একটি সমস্যার সম্মুখীন হতে হবে - যদি চেকবক্স চিহ্নিত না করা হয়, তাহলে, যেহেতু ফর্মে চেকবক্স ছাড়া অন্য কোন উপাদান নেই, $_GET-এ একটি খালি অ্যারে থাকবে। এর মানে হল যে ফর্ম প্রক্রিয়াকরণ কোডে আমরা প্রথম if-এ প্রবেশ করব না, যা ফর্ম জমা দেওয়া পরীক্ষা করে।

সমস্যার সমাধানের জন্য একটি বিশেষ পদ্ধতি ব্যবহার করা হয়: একটি লুকানো ইনপুট তৈরি করা হয় আমাদের চেকবক্সের মতো একই নাম সহ। এক্ষেত্রে লুকানো ইনপুটের মান শূন্য রাখা হয়, এবং চেকবক্সের মান এক রাখা হয়:

html<form action="" method="GET">
  <input type="hidden" name="flag" value="0">
  <input type="checkbox" name="flag" value="1">
  <input type="submit">
</form>

এই ক্ষেত্রে নিম্নলিখিতটি ঘটবে। যদি চেকবক্স চিহ্নিত না করা হয়, তাহলে সার্ভারে শুধুমাত্র লুকানো ইনপুটের মান পাঠানো হবে। যদি চেকবক্স চিহ্নিত করা হয়, তাহলে সার্ভারে একই নাম সহ উভয় মান পাঠানো হবে। কিন্তু, যেহেতু চেকবক্সের মানটি দ্বিতীয় হবে, এটি কেবল প্রথমটিকে প্রতিস্থাপন করবে।

সুতরাং, এখন আমাদের চেকবক্স সার্ভারে হয় শূন্য বা এক পাঠাবে:

html<?php
  var_dump($_GET['flag']); // '0' বা '1'
?>

আসুন আমাদের পরীক্ষায় এটি ব্যবহার করি:

html<?php
  if (!empty($_GET)) {
    if ($_GET['flag'] === '1') {
      echo 'চিহ্নিত';
    } else {
      echo 'চিহ্নিত নয়';
    }
  }
?>
Задание 1

চেকবক্সের মাধ্যমে ব্যবহারকারীকে জিজ্ঞাসা করুন, তার বয়স কি ইতিমধ্যেই 18 বছর হয়েছে কিনা। যদি হয়েছে, তাকে সাইটে অ্যাক্সেসের অনুমতি দিন, এবং যদি না হয় - অনুমতি দেবেন না।