تأیید فرم 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>نظر: <textarea name="comment" rows="5" cols="40"></textarea></label>
<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>

نمونه اجرایی

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