PHP – فیلدهای ضروری فرم‌ها (PHP Form Required Fields)

فیلدهای ضروری فرم‌های PHP

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

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

بر اساس جدول قوانین اعتبارسنجی در صفحه قبل، می‌بینیم که فیلدهای “نام” (Name)، “ایمیل” (E-mail) و “جنسیت” (Gender) ضروری هستند. این فیلدها نمی‌توانند خالی باشند و باید در فرم HTML پر شوند.

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

کد PHP برای اعتبارسنجی فیلدهای ضروری

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

// تعریف متغیرها و تنظیم آن‌ها به مقادیر خالی
$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"]);
  }
}

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}

نمایش پیام‌های خطا در فرم HTML

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

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

Name: <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>

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
<input type="radio" name="gender" value="other">Other
<span class="error">* <?php echo $genderErr;?></span>
<br><br>

<input type="submit" name="submit" value="Submit">
</form>

اعتبارسنجی داده‌های ورودی

گام بعدی اعتبارسنجی داده‌های ورودی است، به این معنا که “آیا فیلد نام فقط حاوی حروف و فاصله است؟”، “آیا فیلد ایمیل شامل یک ساختار صحیح آدرس ایمیل است؟”، و اگر پر شده است، “آیا فیلد وب‌سایت شامل یک URL معتبر است؟”.

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
JavaScript - تاریخ‌ها (Dates)

JavaScript – تاریخ‌ها (Dates)

آبجکت‌های تاریخ (Date) در جاوااسکریپت آبجکت‌های تاریخ در جاوااسکریپت به ما امکان کار با تاریخ و زمان را می‌دهند....

بیشتر بخوانید
JavaScript - آرایه‌های ثابت (Array Const)

JavaScript – آرایه‌های ثابت (Array Const)

جاوااسکریپت: تعریف آرایه با const در سال 2015، جاوااسکریپت کلمه کلیدی مهمی به نام const را معرفی کرد. این...

بیشتر بخوانید
JavaScript - تکرار آرایه‌ها (Array Iteration)

JavaScript – تکرار آرایه‌ها (Array Iteration)

جاوا اسکریپت: تکرار بر روی آرایه‌ها جاوا اسکریپت روش‌های مختلفی برای تکرار (Iteration) بر روی آرایه‌ها ارائه می‌دهد که...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.