آموزش رایگان PHP

آموزش کامل دریافت اطلاعات فرم با متدهای GET و POST در PHP (با رعایت اصول امنیتی)

27م تیر 1405 محراب حسن زاده
آموزش کامل دریافت اطلاعات فرم با متدهای 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 همیشه این موارد را رعایت کنید:

  1. استفاده از htmlspecialchars(): برای جلوگیری از حملات تزریق کد یا XSS همیشه خروجی‌ها را فیلتر کنید.
  2. اعتبارسنجی (Validation): مطمئن شوید ایمیل‌ها، شماره تماس‌ها و اعداد واقعاً معتبر هستند.
  3. توکن‌های CSRF: برای فرم‌های حساس مانند ورود یا پرداخت حتماً از توکن‌های امنیتی ضد جعل درخواست (CSRF) استفاده کنید.

پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

آموزش Directive‌ های Vue.js | استفاده از v-model، v-bind و v-show با مثال
23م آذر 1404

آموزش Directive‌ های Vue.js | استفاده از v-model، v-bind و v-show با مثال

مطالعه بیشتر
آموزش کار با Local Storage و Session Storage در جاوا اسکریپت: ذخیره‌سازی داده‌ها در مرورگر
3م آبان 1403

آموزش کار با Local Storage و Session Storage در جاوا اسکریپت: ذخیره‌سازی داده‌ها در مرورگر

مطالعه بیشتر
آموزش کامل عملگرهای منطقی در PHP (همراه با تفاوت‌های کلیدی)
3م تیر 1405

آموزش کامل عملگرهای منطقی در PHP (همراه با تفاوت‌های کلیدی)

مطالعه بیشتر
آموزش کامل حلقه foreach در PHP برای پیمایش آرایه‌ها (به زبان ساده)
16م تیر 1405

آموزش کامل حلقه foreach در PHP برای پیمایش آرایه‌ها (به زبان ساده)

مطالعه بیشتر
آموزش تگ‌های پیوندی و اتصالی در HTML: ایجاد لینک‌های داخلی و خارجی
29م مرداد 1402

آموزش تگ‌های پیوندی و اتصالی در HTML: ایجاد لینک‌های داخلی و خارجی

مطالعه بیشتر
آموزش موقعیت‌بندی المان‌ها با استفاده از position در CSS: نحوه استفاده از absolute، relative و fixed
5م شهریور 1402

آموزش موقعیت‌بندی المان‌ها با استفاده از position در CSS: نحوه استفاده از absolute، relative و fixed

مطالعه بیشتر
آموزش جامع اینترفیس‌ها و کلاس‌ها (Classes) در ES6 جاوا اسکریپت: مفاهیم و کاربردها
28م مهر 1403

آموزش جامع اینترفیس‌ها و کلاس‌ها (Classes) در ES6 جاوا اسکریپت: مفاهیم و کاربردها

مطالعه بیشتر
استفاده از Flexbox در CSS برای چیدمان‌های مدرن: راهنمای جامع و کاربردی
10م آبان 1403

استفاده از Flexbox در CSS برای چیدمان‌های مدرن: راهنمای جامع و کاربردی

مطالعه بیشتر
آموزش ایجاد تگ‌های صفحه‌بندی در HTML و CSS: طراحی و استایل‌دهی pagination
29م مرداد 1402

آموزش ایجاد تگ‌های صفحه‌بندی در HTML و CSS: طراحی و استایل‌دهی pagination

مطالعه بیشتر
آموزش جامع پارامترها و مقادیر بازگشتی در PHP (بر اساس استانداردهای مدرن)
16م تیر 1405

آموزش جامع پارامترها و مقادیر بازگشتی در PHP (بر اساس استانداردهای مدرن)

مطالعه بیشتر
آموزش لیست‌ها در CSS: طراحی و استایل‌دهی ساده برای لیست‌های HTML
10م شهریور 1402

آموزش لیست‌ها در CSS: طراحی و استایل‌دهی ساده برای لیست‌های HTML

مطالعه بیشتر
توابع فلش (Arrow Functions) در جاوا اسکریپت: ساده‌سازی کد با استفاده از ES6
2م شهریور 1403

توابع فلش (Arrow Functions) در جاوا اسکریپت: ساده‌سازی کد با استفاده از ES6

مطالعه بیشتر

تمامی حقوق معتلق به ناشر سایت است و کپی از آن پیگرد قانونی دارد