آموزش کامل دریافت اطلاعات فرم با متدهای GET و POST در PHP (با رعایت اصول امنیتی)
یکی از اساسیترین کارها در توسعه وب، انتقال دادهها از سمت مرورگر کاربر به سمت سرور است. فرمهای HTML ابزار اصلی این انتقال هستند و زبان برنامه نویسی PHP با متغیرهای فوق سراسری (Superglobals) خود به نامهای $_GET و $_POST کار پردازش این دادهها را به شدت آسان کرده است. در این مقاله آموزشی طبق آخرین استانداردهای گوگل، هر آنچه برای کار با فرمها در PHP نیاز دارید را به همراه نکات امنیتی آموزش خواهیم داد.
متد GET چیست و چگونه کار میکند؟
متد GET دادههای فرم را به صورت جفتهای کلید و مقدار به آدرس صفحه وب (URL) متصل کرده و ارسال میکند. این متد معمولاً برای جستجوها، فیلتر کردن اطلاعات یا کارهایی که نیاز به نشانهگذاری (Bookmark) دارند مناسب است.
فرم نمونه با متد GET
برای ایجاد فرم با این متد، ویژگی method فرم را برابر با "get" قرار میدهیم:
< form action="search.php" method="get" >
< label for="search" >جستجو:< / label >
< input type="text" name="query" id="search" / >
< button type="submit" >بگرد< / button >
< / form >
دریافت دادههای GET در PHP
وقتی فرم بالا ارسال میشود، آدرس مرورگر به چیزی شبیه به search.php?query=book تبدیل خواهد شد. در سمت سرور به این صورت داده را دریافت میکنیم:
if (isset($_GET['query'])) {
// فیلتر کردن ورودی برای امنیت بیشتر
$searchQuery = htmlspecialchars($_GET['query']);
echo "شما به دنبال این واژه هستید: " . $searchQuery;
}
متد POST چیست و چگونه کار میکند؟
متد POST اطلاعات را به صورت پنهان و در بدنه (Body) درخواست HTTP ارسال میکند. این روش امنیت بیشتری برای ارسال دادههای حساس مانند کلمات عبور یا اطلاعات شخصی فراهم میکند و هیچ محدودیتی در حجم دادههای ارسالی ندارد.
فرم نمونه با متد POST
< form action="login.php" method="post" >
< label for="user" >نام کاربری:< / label >
< input type="text" name="username" id="user" / >
< label for="pass" >رمز عبور:< / label >
< input type="password" name="password" id="pass" / >
< button type="submit" >ورود< / button >
< / form >
دریافت دادههای POST در PHP
دادههای ارسال شده با متد POST در URL نمایش داده نمیشوند و در قالب آرایه فوق سراسری $_POST قابل دسترس هستند:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// پاکسازی ورودیها
$username = htmlspecialchars($_POST['username']);
$password = htmlspecialchars($_POST['password']);
echo "خوش آمدید، " . $username;
}
تفاوتهای کلیدی متدهای GET و POST
برای انتخاب صحیح بین این دو متد، جدول مقایسهای زیر را در نظر داشته باشید:
- قابلیت رویت: دادههای GET در URL کاملاً دیده میشوند اما دادههای POST مخفی هستند.
- محدودیت حجم: متد GET دارای محدودیت کاراکتر (معمولاً ۲۰۴۸ کاراکتر) است ولی POST محدودیت خاصی ندارد.
- امنیت: POST به مراتب برای ارسال دادههای حساس امنتر است. برای مسائل امنیتی هرگز از GET استفاده نکنید.
- ذخیرهسازی (Cache): درخواستهای GET کش میشوند ولی POST هرگز کش نمیشود.
نکات امنیتی بسیار حیاتی (Best Practices)
یکی از مواردی که گوگل در استانداردهای خود برای وبسایتها بر بروی آن تاکید دارد، امنیت اطلاعات کاربران است. هنگام پردازش فرمها در PHP همیشه این موارد را رعایت کنید:
- استفاده از htmlspecialchars(): برای جلوگیری از حملات تزریق کد یا XSS همیشه خروجیها را فیلتر کنید.
- اعتبارسنجی (Validation): مطمئن شوید ایمیلها، شماره تماسها و اعداد واقعاً معتبر هستند.
- توکنهای CSRF: برای فرمهای حساس مانند ورود یا پرداخت حتماً از توکنهای امنیتی ضد جعل درخواست (CSRF) استفاده کنید.
پرسش و پاسخ
نظری یافت نشد
برای ارسال نظر ابتدا وارد شوید