عضویت در سایت

ورود

فراموشی رمز عبور

رمز عبور خود را فراموش کرده اید؟ ایمیل خود را وارد کنید

ورود

عضویت در سایت

رایگان ثبت نام کنید و سوالات خود را بپرسید، همچنین میتوانید در پاسخگویی به سوالات دیگر کاربران نیز سهیم باشید، هر مشکلی در ثبت نام یا ورود داشتید با ایمیل beporsam@gmail.com در ارتباط باشید

در بین 1171 آموزش و 2026 پرسش به دنبال چه هستید؟

ویندوز
نصب آنلاین ویندوز

ویندوز 7,8,10,11
مشاوره
مشاوره خرید لپ تاپ و کامپیوتر

مشاوره حرفه ای دریافت کن
بلاگ
مقالات آموزشی

1k+
پشتیبانی آنلاین

سخت افزار/نرم افزار

آموزش فرم ها در PHP – فیلدهای ضروری

سلام

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

فرم HTML که استفاده میکنیم، همان فرمی هست که در دو جلسه ی قبلی ازش استفاده کردیم.

<form method="post" action="">
    Name: <input type="text" name="name" value="">
    <span class="error">* </span>
    <br><br>
    E-mail: <input type="email" name="email" value="">
    <span class="error">* </span>
    <br><br>
    Website: <input type="text" name="website" value="">
    <span class="error"></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">* </span>
    <br><br>
    <input type="submit" name="submit" value="Submit">
</form>

قوانینی که برای اعتبار سنجی فرم بالا در نظر گرفتیم، به شرح زیر است:

فیلد

قوانین

Name

این فیلد ضروری هست و فقط نام هایی را ثبت میکند که شامل حروف و فضای خالی باشند.

E-mail

این فیلد ضروری هست و فقط ایمیل هایی را ثبت میکند که از قوانین ایمیل در آنها رعایت شده باشد، شامل @ و . باشند.

Website

این فیلد اختیاری هست و آدرس سایت وارد شده باید صحیح باشد

Comment

این فیلد اختیاری هست و هر کاراکتری را قبول میکند.

Gender

این فیلد ضروری هست و کاربر فقط میتواند یک گزینه را انتخاب کند

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

در کد زیر که برای فیلدهای ضروری استفاده میکنیم، علاوه بر متغیرهای قبل(که در جلسه قبل نوشتیم)، چند متغیر جدید که عبارت اند از:

  • nameErr$
  • emailErr$
  • genderErr$
  • websiteErr$
مطلب پیشنهادی:  رفع خطای Dism.exe error 1392 در ویندوز(معرفی 6 راه حل)

این متغیرها خطاهایی که برای فیلدهایی که الزامی هستند را در خودشون ذخیره میکنند، تا اگر کاربر فیلد ضروری را تکمیل نکرد و خواست فرم را ارسال کند، خطایی مربوطه نمایش داده شود.

 <?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 = filterInput($_POST["name"]);
  }
  if (empty($_POST["email"])) {
    $emailErr = "Email is required";
  } else {
    $email = filterInput($_POST["email"]);
  }

  if (empty($_POST["website"])) {
    $website = "";
  } else {
    $website = filterInput($_POST["website"]);
  }

  if (empty($_POST["comment"])) {
    $comment = "";
  } else {
    $comment = filterInput($_POST["comment"]);
  }

  if (empty($_POST["gender"])) {
    $genderErr = "Gender is required";
  } else {
    $gender = filterInput($_POST["gender"]);
  }
}
?>

در خط 6 همانطور که قبلا هم گفتیم، چک کردیم که اگر متد ارسالی برابر POST بود، اون موقع بیاد و عملیاتی که مد نظر داریم را روی فیلدها اعمال کند.

و سپس چک کردیم که اگر مقدار فیلد ارسال شده از سمت کاربر خالی بود(یعنی چیزی ارسال نکرده بود)، بیاد و بررسی های لازم را انجام دهد. اگر بخواهیم بیشتر توضیح دهیم به این صورت است که:

  • فیلد Name در فرم ضروری هست، پس برای اینکه کاربر نتونه فرم رو بدون تکمیل کردن این فیلد ارسال کنه، به این صورت کد نویسی کردیم:
  if (empty($_POST["name"])) {
    $nameErr = "Name is required";
  } else {
    $name = filterInput($_POST["name"]);
  }

در تکه کد بالا گفتیم، اگر فیلد Name از سمت کاربر خالی فرستاده شده، بیاد و داخل متغیر nameErr پیغام مناسب رو چاپ کنه(که ما در اینجا پیغام Name is required) را قرار دادیم و اگر فیلد name خالی نبود، مقدار ارسال شده از سمت کاربر رو بیاد از تابع filterInput که برای فیلتر کردن داده های کاربران در جلسه قبل نوشتیم عبور بده.

  • فیلد Comemnt هم اختیاری است و نیازی به تکمیل کردن توسط کاربر نیست، لذا به این صورت کد نویسی میکنیم:
if (empty($_POST["comment"])) {
    $comment = "";
  } else {
    $comment = filterInput($_POST["comment"]);
  }

گفتیم اگه مقدار ارسال شده خالی بود، اشکال نداره فرم رو سمت سرور ارسال کن(مقدارش رو برابر رشته خالی گذاشتیم)، ولی اگر این فیلد توسط کاربر تکمیل شده بود، قبل از ارسال به سمت سرور از تابع filterInput عبورش بده.

این دو نمونه کد که در بالا توضیح داده شد، یکی برای فیلدهای ضروری و یکی هم برای فیلدهای غیرضروری بود. که درک بیشتری داشته باشید.

نمایش پیغام های خطا به کاربران

تا اینجای کار، پیغام ها را تعیین کردیم ولی به کاربر نشون ندادیم، برای اینکه به کاربر نشون بدیم باید در فرمی که داریم، تعدادی کد به این صورت اضافه کنیم:

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

در کنار فیلدهای ضروری یک تگ span به این صورت اضافه کردیم:

<span class="error">* <?php echo $nameErr;?></span>

که پیغام مورد نظر ما را در صورت خالی نبودن فرم، نمایش دهد.

مطلب پیشنهادی:  اموزش مقدماتی اکسل- قسمت دوم(شروع به کار برنامه)

و در انتها تمام کدهایی که تا الان نوشتییم به صورت یکجا:

<!DOCTYPE HTML>  
<html>
<head>
</head>
<body>  
 
<?php
// تابعی که نوشتیم و داده های ارسالی را قبلا از ارسال از این تابع عبور میدهیم
function filterInput($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
 
// تغریف متغیر ها و دادن مقدار اولیه خالی به هر کدام
$name = $email = $gender = $comment = $website = "";
// تعریف متغیر، برای نگهداری پیغام های خطا
$nameErr = $emailErr = $genderErr = $websiteErr = "";
 
// چک میکنیم اگر متد ارسالی برابر پست بود، مقادیر را از فرم دریافت کند
// و از تابعی که نوشتیم، عبور دهد تا داده هایی بی عیب و نقص داشته باشیم.
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (empty($_POST["name"])) {
    $nameErr = "Name is required";
  } else {
    $name = filterInput($_POST["name"]);
  }
 
  if (empty($_POST["email"])) {
    $emailErr = "Email is required";
  } else {
    $email = filterInput($_POST["email"]);
  }
 
  if (empty($_POST["website"])) {
    $website = "";
  } else {
    $website = filterInput($_POST["website"]);
  }
 
  if (empty($_POST["comment"])) {
    $comment = "";
  } else {
    $comment = filterInput($_POST["comment"]);
  }
 
  if (empty($_POST["gender"])) {
    $genderErr = "Gender is required";
  } else {
    $gender = filterInput($_POST["gender"]);
  }
}
?>
 
 
<h2>PHP Form Validation Example</h2>
 <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> 
 
<?php
echo "<h2>Your Input:</h2>";
echo $name;
echo "<br>";
echo $email;
echo "<br>";
echo $website;
echo "<br>";
echo $comment;
echo "<br>";
echo $gender;
?>
 
</body>
</html>

برای اجرا کافیست کدهای بالا را در یک فایل PHP ذخیره و در سمت سرور یا لوکال هاست، اجرا کنید.

در قسمت بعدی به صورت حرفه ای تر میخواهیم داده های ورودی را اعتبار سنجی کنیم، برای مثال باید بررسی کنیم ببینیم آدرس ایمیلی که کاربر وارد کند، از قوانین یک آدرس ایمیل پیروی میکند یا خیر، در قسمت بعدی نیز همراه ما باشید.

مطلب پیشنهادی:  آموزش فارسی word - قسمت بیست و دوم(HyperLink)

موفق باشید.

درباره احمد آخوندیمدیر سایت

همیشه در تلاش برای یادگیری :) ارتباط با من: 09159352892

دنبال کردن

ارسال نظر

رفتن به بالا

سامانه آموزشی و خدماتی بپرسم

اولین وب سایت آموزشی و پرسش و پاسخ در ایران

بپرسم را میتوان به عنوان مرجعی برای آموزش و حل مشکلات دانست، در بپرسم سعی کرده ایم آموزش های برنامه نویسی، طراحی سایت، کار با نرم افزارها ها و… را آموزش دهیم. همچنین محیطی فراهم کرده ایم تا کاربران بتوانند در این محیط سوالات خود را بپرسند و مشکل خود را حل کنند.