Form Validation

اعتبارسنجی فرم (Form Validation) یعنی مطمئن شویم داده‌هایی که کاربر وارد می‌کند:

  • خالی نیستند

  • ساختار درستی دارند (مثل ایمیل، شماره تلفن، عدد و ...)

  • امن هستند و شامل کد مخرب نمی‌شوند

در PHP معمولاً دو نوع اعتبارسنجی انجام می‌شود:

  1. اعتبارسنجی سمت کلاینت (Client-Side) → با HTML5 و JavaScript

  2. اعتبارسنجی سمت سرور (Server-Side) → با PHP (مهم‌تر و مطمئن‌تر)

🔹 یک فرم ساده

<!DOCTYPE html> <html> <body> <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>"> Name: <input type="text" name="name"> <br><br> Email: <input type="text" name="email"> <br><br> Age: <input type="text" name="age"> <br><br> <input type="submit" value="Submit"> </form> </body> </html>

🔹 پردازش داده‌ها در PHP

<?php $name = $email = $age = ""; $nameErr = $emailErr = $ageErr = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { // ✅ اعتبارسنجی نام if (empty($_POST["name"])) { $nameErr = "Name is required"; } else { $name = htmlspecialchars($_POST["name"]); if (!preg_match("/^[a-zA-Z-' ]*$/", $name)) { $nameErr = "Only letters and spaces allowed"; } } // ✅ اعتبارسنجی ایمیل if (empty($_POST["email"])) { $emailErr = "Email is required"; } else { $email = htmlspecialchars($_POST["email"]); if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $emailErr = "Invalid email format"; } } // ✅ اعتبارسنجی سن if (empty($_POST["age"])) { $ageErr = "Age is required"; } else { $age = htmlspecialchars($_POST["age"]); if (!is_numeric($age)) { $ageErr = "Age must be a number"; } } } ?>

🔹 نمایش خطاها

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>"> Name: <input type="text" name="name" value="<?php echo $name; ?>"> <span style="color:red"><?php echo $nameErr; ?></span> <br><br> Email: <input type="text" name="email" value="<?php echo $email; ?>"> <span style="color:red"><?php echo $emailErr; ?></span> <br><br> Age: <input type="text" name="age" value="<?php echo $age; ?>"> <span style="color:red"><?php echo $ageErr; ?></span> <br><br> <input type="submit" value="Submit"> </form>

🔹 خروجی نمونه

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

Email is required Invalid email format

✅ نکات مهم

  • همیشه از htmlspecialchars() برای جلوگیری از حملات XSS استفاده کنید.

  • از filter_var() برای اعتبارسنجی ایمیل، URL و عددها کمک بگیرید.

  • استفاده از Regex (عبارات منظم) برای کنترل دقیق‌تر ورودی‌ها مفید است.