اعتبارسنجی فرم (Form Validation)
«اعتبارسنجی فرم PHP» یعنی ورودی ها را چک کنیم. هدف امنیت است. هکر نتواند کد تزریق کند. پس باید ورودی ها پاکسازی شوند و پیام خطا روشن باشد.
قواعد اصلی اعتبارسنجی فرم PHP
فرم با روش POST ارسال می شود. گاهی از $_SERVER["PHP_SELF"] برای ارسال به همین صفحه استفاده می کنیم. اما نسخه ناامن خطر XSS دارد.
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
هشدار: XSS یعنی تزریق اسکریپت مخرب در صفحه وب. پس باید آدرس را بی خطر کنیم.
نسخه امن با htmlspecialchars
htmlspecialchars() کاراکترهای خاص را به HTML امن تبدیل می کند. بنابراین کد تزریقی اجرا نمی شود.
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
تابع test_input برای پاکسازی
این الگو از منبع است: با trim فاصله ها حذف می شوند. با stripslashes بک اسلش پاک می شود. با htmlspecialchars خروجی امن می شود.
// define variables and set to empty values
$name = "";
$email = "";
$gender = "";
$comment = "";
$website = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = test_input($_POST["name"]);
$email = test_input($_POST["email"]);
$website = test_input($_POST["website"]);
$comment = test_input($_POST["comment"]);
$gender = test_input($_POST["gender"]);
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
نکات تکمیلی اعتبارسنجی
نام باید فقط حروف و فاصله باشد. ایمیل باید @ و . داشته باشد. وب سایت اگر بود، باید URL معتبر باشد. جنسیت باید انتخاب شود.
گام های عملی سریع
- فرم را با method="post" بساز.
- action را با
htmlspecialcharsایمن کن. - داده ها را با
test_inputپاکسازی کن. - قواعد هر فیلد را بررسی کن.
- پیام خطا را نزدیک همان فیلد نشان بده.
مطالب مرتبط
برای ساخت فرم پایه به مدیریت فرم PHP برو. همچنین ارسال داده با $_POST و $_GET را مرور کن. در ادامه این مبحث، فیلدهای اجباری را ببین.
جمع بندی سریع
- همیشه خروجی را امن کن.
test_inputتکرار را کم می کند.- قواعد هر فیلد روشن باشد.
- XSS را جدی بگیر.