بررسی فرم PHP - فیلدهای اجباری

این بخش نشان می‌دهد که چگونه می‌توان فیلدهای ورودی اجباری ایجاد کرد و پیام‌های خطای مورد نیاز را ایجاد کرد.

PHP - فیلدهای ورودی

در بخش قبلی از قوانین بررسی می‌بینیم که "نام", "ایمیل" و "جنسیت" فیلدها ضروری هستند. این فیلدها نمی‌توانند خالی باشند و باید در فرم HTML پر شوند.

فیلد قوانین بررسی
نام ضروری. باید شامل حروف و فضاهای خالی باشد.
ایمیل ضروری. باید شامل آدرس ایمیل معتبر (شامل @ و .) باشد.
وب‌سایت انتخابی. اگر پر شود، باید شامل URL معتبر باشد.
نظر انتخابی. فیلد ورودی چند خطی (متن).
جنسیت ضروری. باید یک گزینه انتخاب کنید.

در بخش قبلی، تمام فیلدهای ورودی انتخابی بودند.

در کد زیر، ما چندین متغیر جدید اضافه کرده‌ایم: $nameErr، $emailErr، $genderErr و $websiteErr. این متغیرهای خطا پیام‌های خطای فیلدهای درخواست شده را ذخیره می‌کنند. همچنین، ما یک دستور if else برای هر متغیر $_POST اضافه کرده‌ایم. این دستور بررسی می‌کند که آیا متغیر $_POST خالی است (با استفاده از تابع PHP empty()). اگر خالی باشد، پیام خطا در متغیرهای خطای مختلف ذخیره می‌شود. اگر پر باشد، داده‌های ورودی کاربر از طریق تابع test_input() ارسال می‌شود:

<?php}}
// تعریف متغیرها و تنظیم آن‌ها به مقادیر خالی
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (empty($_POST["name"])) {
    $nameErr = "Name is required";
  } else {
    $name = test_input($_POST["name"]);
  }
  if (empty($_POST["email"])) {
    $emailErr = "Email is required";
  } else {
    $email = test_input($_POST["email"]);
  }
  if (empty($_POST["website"])) {
    $website = "";
  } else {
    $website = test_input($_POST["website"]);
  }
  if (empty($_POST["comment"])) {
    $comment = "";
  } else {
    $comment = test_input($_POST["comment"]);
  }
  if (empty($_POST["gender"])) {
    $genderErr = "Gender is required";
  } else {
    $gender = test_input($_POST["gender"]);
  }
}
?>

PHP - نمایش پیام‌های خطا

در فرم‌های HTML، ما یک اسکریپت کوچک در پشت هر فیلد درخواستی اضافه می‌کنیم. اگر نیاز باشد، پیام‌های خطایی مناسب تولید می‌شود (اگر کاربر سعی کند فرم را ارسال کند بدون اینکه فیلدهای ضروری را پر کند):

مثال

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
نام: <input type="text" name="name">
<span class="error">* <?php echo $nameErr;?></span>
<br><br>
E-mail:
<input type="text" name="email">
<span class="error">* <?php echo $emailErr;?></span>
<br><br>
Website:
<input type="text" name="website">
<span class="error"><?php echo $websiteErr;?></span>
<br><br>
<label>Comment: <textarea name="comment" rows="5" cols="40"></textarea>
<br><br>
Gender:
<input type="radio" name="gender" value="female">Female
<input type="radio" name="gender" value="male">Male
<span class="error">* <?php echo $genderErr;?></span>
<br><br>
<input type="submit" name="submit" value="Submit"> 
</form>

اجرای نمونه

در اینجا است که داده‌های ورودی تأیید می‌شوند، یعنی «آیا فیلد Name فقط شامل حروف و فضاهای خالی است؟» و «آیا فیلد E-mail شامل قالب معتبر ایمیل است؟» و اگر فیلد Website پر شده باشد، «آیا این فیلد شامل URL معتبر است؟».