Form Handling

در PHP برای دریافت داده‌ها از فرم‌های HTML از دو متد اصلی استفاده می‌کنیم:

  • GET → داده‌ها در URL ارسال می‌شوند.

  • POST → داده‌ها در پس‌زمینه (بدون نمایش در URL) ارسال می‌شوند.

این داده‌ها در PHP با استفاده از سوپرگلوبال‌های زیر در دسترس قرار می‌گیرند:

  • $_GET

  • $_POST

  • $_REQUEST

🔹 یک فرم ساده HTML

<!DOCTYPE html> <html> <body> <form method="post" action="welcome.php"> Name: <input type="text" name="name"> <br><br> Email: <input type="text" name="email"> <br><br> <input type="submit" value="Submit"> </form> </body> </html>

🔹 دریافت داده‌ها با PHP (POST)

📄 welcome.php

<?php $name = $_POST['name']; $email = $_POST['email']; echo "Welcome " . $name . "<br>"; echo "Your email is: " . $email; ?>

🔹 دریافت داده‌ها با GET

📄 فرم:

<form method="get" action="welcome.php"> Name: <input type="text" name="name"> <input type="submit"> </form>

📄 welcome.php:

<?php echo "Hello " . $_GET['name']; ?>

📌 داده در URL ظاهر می‌شود:

welcome.php?name=Ali

🔹 استفاده از $_REQUEST

$_REQUEST می‌تواند داده‌ها را از هر دو متد GET و POST بگیرد:

<?php $name = $_REQUEST['name']; echo "Hello " . $name; ?>

🔹 اعتبارسنجی داده‌های فرم

برای جلوگیری از خطا یا حمله، داده‌ها باید تمیزسازی (sanitize) شوند.

<?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = htmlspecialchars($_POST['name']); $email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL); echo "Name: " . $name . "<br>"; echo "Email: " . $email; } ?>

🔹 بررسی خالی نبودن ورودی

<?php if ($_SERVER["REQUEST_METHOD"] == "POST") { if (empty($_POST["name"])) { echo "Name is required!"; } else { echo "Name: " . $_POST["name"]; } } ?>

✅ خلاصه

  • $_GET → داده‌ها در URL قابل مشاهده هستند.

  • $_POST → داده‌ها در URL نمایش داده نمی‌شوند.

  • $_REQUEST → داده‌ها را از GET یا POST می‌گیرد.

  • داده‌های ورودی باید همیشه اعتبارسنجی و تمیزسازی شوند.