آموزش PHP > راهکارهای موثر در PHP > راهکار های کار با فرم ها در
PHP
بخش چهارم : بررسی نحوه اعتبار سنجی مقادیر ورودی در فیلدهای متنی PHP
مقدمه :
در راهکارهای قبل ، نحوه کلی اعتبار سنجی و کنترل وارد نمودن مقادیر در فیلدهای یک
فرم را بررسی کردیم .
در این بخش به صورت جزیی تر و موردی به نحوه اعتبار سنجی مقادیر وارد شده برای فیلم
های Name , Email و URL خواهیم پرداخت .
نحوه اعتبار سنجی کادر Name :
فرض کنید که در یک کادر متن ، می خواهیم کاربر فقط بتواند حروف و یا فاصله خالی وارد
کرده و وارد نمودن اعداد و سایر کاراکترها مجاز نباشد .
کد زیر یک راه ساده برای کنترل این مسئله را در اختیارمان قرار می دهد . در ابتدا مقدار
ارسال شده از فرم توسط متغیر ["POST["name_$ دریافت شده و در متغیر name$ ریخته می
شود .
سپس توسط تابع ( ) Preg_match ، الگوی تعیین شده در تابع مقدار کنترل را سنجیده و چنانچه
فقط شامل حروف و یا فاصله خالی باشد ، مقدار true را بر می گرداند . در غیر اینصورت
مقدار آن false است .
با false بودن مقدار تابع ( ) Preg_match ، دستور شرطی if کد اجرا شده و یک پیام خطا
، مبنی بر غیر مجاز بودن استفاده از سایر کاراکترها را برای نمایش ثانویه در متغیر
nameErr$ دخیره می کند . به کد زیر دفت نمایید :
|
کد
|
$name = test_input($_POST["name"]);
if (!preg_match("/^[a-zA-Z ]*$/",$name))
{
$nameErr = "فقط حروف و فاصله خالی مچاز
است ";
}
|
نکته مهم : تابع ( ) Preg_match ، تابعی است که یک مقدار وارد شده
را با الگو یا معیار تعیین شده برای آن مقایسه کرده و مقدار true یا false را بر می
گرداند .
نحوه اعتبار سنجی فیلد ایمیل Email :
فرض کنید در یک کادر متن ، کاربر بایستی ایمیل خود را وارد کند . به وسیله کد زیر می
توانید تشخیص دهید آیا مقداری که کاربر در کادر ایمیل وارد کرده ، دارای ساختار صحیح
یک ایمیل است یا خیر . در غیر اینصورت پیام اخطاری را به وی نشان دهید .
|
کد
|
$email = test_input($_POST["email"]);
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email))
{
$emailErr = "آدرس ایمیل نا معتبر است";
}
|
نحوه اعتبار سنجی مقدار ورودی در کادر URL :
در مثال زیر نیز کدی را طراحی کرده ایم که همانند مثال های قبل ، از طریق تابع ( )
Preg_match ، مقدار وارد شده در کادر website را بررسی کرده و چنانچه مطابق الگوی صحیح
یک آدرس اینترنتی باشد ، آن را قبول کرده و در غیر اینصورت یک پیام خطا را جهت نمایش
ثانویه به کاربر در متغیر $websiteErr ذخیره کند .
|
کد
|
$website = test_input($_POST["website"]);
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website))
{
$websiteErr = "آدرس اینترنتی نا معتبر است";
}
|
نمایش کامل مثال و مشاهده خروجی صفحه :
پس از اینکه به صورت تک به تک با نحوه اعتبار سنجی فیلدهای فرم آشنا شدید ، حال کد
کامل مثال را نشان داده و می توانید خروجی آن را در عمل مشاهده نمایید :
|
کد
|
<?php
// تعیین متغیرهای لازم و قرار دادن آنها بر روی مقدار اولیه خالی
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
if (empty($_POST["name"]))
{$nameErr = "وارد
نمودن نام اجباری است";}
else
{
$name = test_input($_POST["name"]);
// چک کردن اینکه آیا نام وارد شده فقط شامل حروف و فاصله خالی است
if (!preg_match("/^[a-zA-Z ]*$/",$name))
{
$nameErr = " فقط حروق و فاصله خالی مجاز است ";
}
}
if (empty($_POST["email"]))
{$emailErr = "وارد نمودن ایمیل اجباری
است";}
else
{
$email = test_input($_POST["email"]);
// چک کردن اینکه آیا
ایمیل وارد شده معتبر است
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email))
{
$emailErr = " ایمیل وارد شده نا معتبر است";
}
}
if (empty($_POST["website"]))
{$website = "";}
else
{
$website = test_input($_POST["website"]);
// چک کردن اینکه آیا آدرس
اینترنتی وارد شده دارای ساختار صحیح است
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website))
{
$websiteErr = "آدرس اینترنتی وارد شده نا معتبر است";
}
}
if (empty($_POST["comment"]))
{$comment = "";}
else
{$comment = test_input($_POST["comment"]);}
if (empty($_POST["gender"]))
{$genderErr = "تعیین جنسیت اجباری
است";}
else
{$gender = test_input($_POST["gender"]);}
}
?>
|
|
خروجی
|
مشاهده خروجی مثال
|
راجع این مطلب
سوال یا اشکالی دارید ؟! آن را در انجمن سایت مطرح نمایید ...
>>>>> ورود به انجمن تخصصی
نطر خودتان درباره این صفحه :