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

برای طراحی فرم شکل بالا کد آنرا به صورت زیر را در یک فایل با پسوند php وارد می کنیم.
<h2>مثال اعتبارسنجی فرم</h2>
<p>* فیلدهایی که باید پر شوند</p>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
نام:
<input type="text" name="name">*
<span class="Err"><?php echo $nameErr; ?> </span>
<br>
جنسیت:
<input type="radio" name="gender" value="مرد"> مرد
<input type="radio" name="gender" value="زن"> زن *
<span class="Err"><?php echo $genderErr; ?></span>
<!-- <select>
<option value="معاف">معاف
<option value="خدمت کرده" > خدمت کرده
</select> -->
<br>
<br>
<input type="submit" value="نمایش و اعتبارسنجی اطلاعات">
</form>
جهت عدم ارسال اطلاعات به صفحه دیگر مقدار PHP_SELF برای SERVER_$ در صفت action قرار گرفته است. کلاس Err به صورت زیر در قسمت head به عنوان یک شیوه نامه تعریف می شود.
<style>
.Err{
color:red;
}
</style>
متغیرهای nameErr و genderErr ابتدا مقدار خالی دریافت می کنند اگر مقادیر فرم معتبر نبودند عباراتی در آنها قرار می گیرد. کد زیر به بررسی وضعیت فرم می پردازد.
<?php
$nameErr=$name=$genderErr=$gender="";
if($_SERVER["REQUEST_METHOD"]=="POST")
{
if(empty($_POST["name"]))
{
$nameErr="نام را باید وارد کنید";
}else{
$name=test_input($_POST["name"]);
}
if(empty($_POST["gender"])){
$genderErr="جنسیت را مشخص کنید";
}else{
$gender=test_input($_POST["gender"]);
}
}
function test_input($data)
{
$data=trim($data);
return $data;
}
?>
همانطوریکه مشاهده می شود ابتدا بررسی می شود که اطلاعات فرم با متد post ارسال شده یا خیر. چنانچه با متد post ارسال شده باشد و مقدارش خالی باشد پیغامی در متغیر nameErr قرار می گیرد. در غیراینصورت متغیر name مقدار وارد شده را دریافت می کند.تابع test_input فاصله های ابتدا و انتهای نوشته های کاربر را حذف می کند. برای جنسیت نیز به همین صورت متغیرهای genderErr و gender مقداردهی می شوند.
چنانچه اطلاعات وارد شده معتبر باشند در پایین فرم مقادیر متغیرهای name و gender نمایش داده می شوند. برای این منظور کد زیر استفاده می شوند.
<?php
echo "<hr>";
echo "<h2>اطلاعات وارد شده ی شما:</h2>";
echo "نام :". $name;
echo "<br>";
echo "جنسیت: ". $gender;
?>
چنانچه بخواهیم به کمک دستورات php به فرم یک عنصر لیست بازشو اضافه کنیم که دارای مقادیر خدمت رفته ، معافیت پزشکی و معافیت کفالت باشد کد زیر استفاده می شود.
وضعیت خدمت:
<?php
echo "<select>";
$k=array("خدمت رفته","معافیت پزشکی","معافیت کفالت");
foreach($k as $value){
echo "<option value='" . $value. "'>".$value . "</option>";
}
echo "</select>"."*";
?>
<br>
کل کد نوشته شده به صورت زیر است:
<html>
<head>
<style>
.Err{
color:red;
}
</style>
</head>
<body dir="rtl">
<?php
$nameErr=$name=$genderErr=$gender="";
if($_SERVER["REQUEST_METHOD"]=="POST")
{
if(empty($_POST["name"]))
{
$nameErr="نام را باید وارد کنید";
}else{
$name=test_input($_POST["name"]);
}
if(empty($_POST["gender"])){
$genderErr="جنسیت را مشخص کنید";
}else{
$gender=test_input($_POST["gender"]);
}
}
function test_input($data)
{
$data=trim($data);
return $data;
}
?>
<h2>مثال اعتبارسنجی فرم</h2>
<p>* فیلدهایی که باید پر شوند</p>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
نام:
<input type="text" name="name">*
<span class="Err"><?php echo $nameErr; ?> </span>
<br>
جنسیت:
<input type="radio" name="gender" value="مرد"> مرد
<input type="radio" name="gender" value="زن"> زن *
<span class="Err"><?php echo $genderErr; ?></span>
<!-- <select>
<option value="معاف">معاف
<option value="خدمت کرده" > خدمت کرده
</select> -->
<br>
وضعیت خدمت:
<?php
echo "<select>";
$k=array("خدمت رفته","معافیت پزشکی","معافیت کفالت");
foreach($k as $value){
echo "<option value='" . $value. "'>".$value . "</option>";
}
echo "</select>"."*";
?>
<br>
<input type="submit" value="نمایش و اعتبارسنجی اطلاعات">
</form>
<?php
echo "<hr>";
echo "<h2>اطلاعات وارد شده ی شما:</h2>";
echo "نام :". $name;
echo "<br>";
echo "جنسیت: ". $gender;
?>
</body>
</html>