مدیریت فرم (PHP Form Handling)
مدیریت فرمها: پلِ ارتباطی با کاربر 📥🌐
فرمها قلبِ تعامل در وب هستند. وقتی کاربر دکمهیِ "ارسال" را میزند، دادهها به یک فایلِ PHP در سرور فرستاده میشوند تا پردازش شوند.
درکِ متدهایِ ارسال (GET vs POST)
این دو متد تفاوتهایِ بنیادی در چگونگیِ جابجاییِ داده دارند:
- GET: دادهها را در آدرسبار (URL) نمایش میدهد. برایِ جستجوها عالی است اما برایِ پسوردها فاجعه است!
- POST: دادهها را به صورتِ مخفی در بدنه (Body) درخواست میفرستد. ظرفیتِ بسیار بالاتری دارد و امنتر است.
دریافتِ داده در سمتِ سرور:
بعد از ارسال، PHP به طورِ خودکار دادهها را در آرایههایِ سوپرگلوبالِ $_GET یا $_POST قرار میدهد.
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) استفاده کنید که بسیار دقیقتر و ایمنتر است.
تمرینهای عملی
برای تثبیت یادگیری این درس تمرینهای زیر را حل کنید
یک کاربر فرمی را با فیلد "email" و متد POST ارسال کرده است. این مقدار را دریافت کرده و چاپ کنید.
<?php
echo $_POST["email"];
?>
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.