دوره‌ها / آموزش جامع PHP (از صفر تا استادی) / مدیریت فرم (PHP Form Handling)

مدیریت فرم (PHP Form Handling)

30 دقیقه Article

مدیریت فرم‌ها: پلِ ارتباطی با کاربر 📥🌐

فرم‌ها قلبِ تعامل در وب هستند. وقتی کاربر دکمه‌یِ "ارسال" را می‌زند، داده‌ها به یک فایلِ PHP در سرور فرستاده می‌شوند تا پردازش شوند.

درکِ متدهایِ ارسال (GET vs POST)

این دو متد تفاوت‌هایِ بنیادی در چگونگیِ جابجاییِ داده دارند:

  • GET: داده‌ها را در آدرس‌بار (URL) نمایش می‌دهد. برایِ جستجوها عالی است اما برایِ پسوردها فاجعه است!
  • POST: داده‌ها را به صورتِ مخفی در بدنه (Body) درخواست می‌فرستد. ظرفیتِ بسیار بالاتری دارد و امن‌تر است.

دریافتِ داده در سمتِ سرور:

بعد از ارسال، PHP به طورِ خودکار داده‌ها را در آرایه‌هایِ سوپرگلوبالِ $_GET یا $_POST قرار می‌دهد.

{code_block('$name = $_POST["username"];\necho "Welcome, " . $name;')}
تگِ Form در HTML: صفتِ action آدرسِ فایلِ PHP و صفتِ method نوعِ ارسال را مشخص می‌کند. نامِ فیلدها (صفت name) کلیدهایِ اصلی شما در PHP هستند.
امنیتِ اولیه: هرگز به داده‌هایِ ورودی اعتماد نکنید! فرض کنید هر چیزی که کاربر می‌فرستد ممکن است تلاشی برایِ نفوذ باشد.

مثالِ یک فرمِ ساده:

<form action="welcome.php" method="post">\n Name: <input type="text" name="fname">\n <input type="submit">\n</form>

چرا پردازشِ سمتِ سرور؟

برخلافِ جاوااسکریپت که می‌تواند فرم را در مرورگر چک کند، PHP می‌تواند داده‌ها را در دیتابیس ذخیره کند، ایمیل بفرستد یا فایل آپلود کند. این قدرتِ واقعیِ بک‌اِند (Backend) است.

<hr style="margin: 50px 0; border: 0; border-top: 1px dashed rgba(255,255,255,0.1);">

بخش تخصصی: امنیت و مدیریتِ پیشرفته‌یِ فرم‌ها 🐘🛡️

در دنیایِ واقعی، فرم‌ها خطرناک‌ترین بخشِ اپلیکیشنِ شما هستند. هکرها از طریقِ فرم‌ها سعی می‌کنند کدهایِ مخرب تزریق کنند یا داده‌هایِ شما را سرقت کنند.

۱. امنیت در برابر XSS (تزریق کد)

هرگز داده‌یِ کاربر را بدونِ پاکسازی چاپ نکنید. تابعِ htmlspecialchars() کاراکترهایی مثل < و > را به کدهایِ بی‌خطر تبدیل می‌کند تا مرورگر آن‌ها را به عنوانِ تگِ HTML اجرا نکند.

۲. تکنیکِ CSRF Protection

برایِ جلوگیری از این که یک مهاجم از طرفِ کاربرِ شما فرمی را ارسال کند، باید از یک Token امنیتیِ یکبار مصرف در هر فرم استفاده کنید. این توکن در سمتِ سرور چک می‌شود تا تایید شود فرم واقعاً از سایتِ خودتان ارسال شده است.

۳. استفاده از Filter Extension

PHP دارایِ یک افزونه‌یِ داخلیِ قدرتمند برایِ اعتبارسنجی است. به جایِ نوشتنِ رگکس‌هایِ پیچیده برایِ ایمیل، از filter_var($email, FILTER_VALIDATE_EMAIL) استفاده کنید که بسیار دقیق‌تر و ایمن‌تر است.

نکته مهندسی: همیشه از متد POST برایِ ارسالِ داده‌هایِ حساس استفاده کنید. داده‌هایِ GET در تاریخچه‌یِ مرورگر (History) و لاگ‌هایِ سرور باقی می‌مانند که یک ریسکِ امنیتیِ بزرگ است.

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

دریافتِ داده از POST Easy
سوال تمرین

یک کاربر فرمی را با فیلد "email" و متد POST ارسال کرده است. این مقدار را دریافت کرده و چاپ کنید.

پاسخ تمرین
PHP
<?php
echo $_POST["email"];
?>

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.