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

آموزش کامل متغیرهای $_GET، $_POST و $_REQUEST در PHP به زبان ساده

1405/05/01 20:01 محراب حسن زاده
آموزش کامل متغیرهای $_GET، $_POST و $_REQUEST در PHP به زبان ساده

مقدمه: متغیرهای فوق‌سراسری (Superglobals) در PHP چیستند؟

در زبان برنامه نویسی PHP، متغیرهای فوق‌سراسری یا Superglobals متغیرهایی از پیش تعریف‌شده هستند که در تمام بخش‌های کد (بدون توجه به Scope یا دامنه دسترسی) قابل استفاده هستند. سه مورد از مهم‌ترین و پرکاربردترین این متغیرها، $_GET، $_POST و $_REQUEST نام دارند که برای دریافت اطلاعات ارسال شده از مرورگر کاربر به سرور استفاده می‌شوند.

متغیر فوق‌سراسری $_GET چیست؟

متغیر $_GET یک آرایه انجمنی (Associative Array) در PHP است که اطلاعات ارسال شده از طریق متد GET در پروتکل HTTP را جمع‌آوری می‌کند. اطلاعات ارسال شده در این متد به انتهای آدرس URL صفحه اضافه می‌شوند و برای همه کاربران قابل مشاهده هستند.

ویژگی‌های متد GET

  • اطلاعات ارسالی به صورت جفت‌های کلید و مقدار (Key-Value) در آدرس بار مرورگر نمایش داده می‌شوند (مثلاً: page.php?name=Ali&age=25).
  • برای ارسال اطلاعات غیرحساس مانند فیلترهای جستجو، دسته‌بندی‌ها و شماره صفحات مناسب است.
  • دارای محدودیت حجم در ارسال داده است (معمولاً حداکثر ۲۰۴۸ کاراکتر).
  • امکان بوکمارک کردن (Bookmark) آدرس صفحه همراه با داده‌های ارسالی وجود دارد.

مثال کاربردی استفاده از $_GET

ابتدا فرم HTML زیر را در نظر بگیرید که داده‌ها را با متد GET ارسال می‌کند:

< form action='process.php' method='get' >
  نام: < input type='text' name='username' >
  < button type='submit' >ارسال< / button >
< / form >

حالا در فایل process.php، می‌توانیم اطلاعات ارسال شده را به شکل زیر دریافت و پردازش کنیم:


if (isset($_GET['username'])) {
    $username = htmlspecialchars($_GET['username']);
    echo "سلام " . $username . "، خوش آمدید!";
}

متغیر فوق‌سراسری $_POST چیست؟

متغیر $_POST نیز یک آرایه انجمنی است که اطلاعات ارسال شده از طریق متد POST در پروتکل HTTP را جمع‌آوری می‌کند. در این متد، برخلاف متد GET، اطلاعات در بدنه (Body) درخواست HTTP ارسال می‌شوند و در آدرس بار مرورگر نمایش داده نمی‌شوند.

ویژگی‌های متد POST

  • امنیت بالاتری نسبت به GET دارد زیرا اطلاعات در آدرس بار لو نمی‌روند (هرچند همچنان باید رمزنگاری شوند).
  • هیچ محدودیتی در حجم داده‌های ارسالی ندارد و برای آپلود فایل‌ها کاملاً مناسب است.
  • نمی‌توان صفحات حاصل از متد POST را بوکمارک کرد.
  • برای اطلاعات حساس مانند کلمات عبور، اطلاعات کارت بانکی و فرم‌های ثبت‌نام الزامی است.

مثال کاربردی استفاده از $_POST

فرم HTML زیر اطلاعات را با متد POST ارسال می‌کند:

< form action='login.php' method='post' >
  ایمیل: < input type='email' name='email' >
  رمز عبور: < input type='password' name='password' >
  < button type='submit' >ورود< / button >
< / form >

حالا در فایل login.php داده‌های ارسالی را به شکل زیر مدیریت می‌کنیم:


if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $email = htmlspecialchars($_POST['email']);
    $password = htmlspecialchars($_POST['password']);
    // عملیات بررسی احراز هویت در دیتابیس
    echo "درخواست ورود برای ایمیل " . $email . " دریافت شد.";
}

متغیر فوق‌سراسری $_REQUEST چیست؟

متغیر $_REQUEST یک متغیر ترکیبی در PHP است که به طور پیش‌فرض شامل محتویات آرایه‌های $_GET، $_POST و $_COOKIE می‌باشد. به این معنی که فرقی نمی‌کند اطلاعات با چه متدی به سرور ارسال شده باشند؛ شما می‌توانید با استفاده از $_REQUEST به آن‌ها دسترسی پیدا کنید.

چرا استفاده از $_REQUEST پیشنهاد نمی‌شود؟

با وجود اینکه استفاده از $_REQUEST کار را راحت‌تر می‌کند، اما طبق استانداردهای گوگل و اصول برنامه‌نویسی ایمن، استفاده از آن توصیه نمی‌شود. دلایل آن عبارتند از:

  • ابهام در منبع داده: مشخص نیست که داده ورودی واقعاً از یک فرم POST امن آمده است یا از یک کوکی دستکاری شده.
  • مسائل امنیتی: احتمال بروز حملات XSS و پارامتر پرایس (Parameter Pollution) افزایش می‌یابد.
  • کارایی ضعیف‌تر: پردازش و ادغام چندین آرایه بزرگ سرعت اجرای اسکریپت را کاهش می‌دهد.

مقایسه کلی GET در مقابل POST

ویژگی متد GET متد POST
محل نمایش داده‌ها آدرس بار (URL) بدنه درخواست (HTTP Body)
امنیت داده‌ها بسیار پایین (مناسب برای جستجو) بالا (مناسب برای کلمات عبور)
محدودیت حجم محدود (حدود ۲ کیلوبایت) نامحدود (بسته به تنظیمات سرور)
قابلیت بوکمارک دارد ندارد

نکات امنیتی حیاتی در استفاده از داده‌های ارسالی

هرگز به داده‌های ارسال شده از سمت کاربر اعتماد نکنید! برای جلوگیری از حملات هک مانند SQL Injection و XSS، همیشه داده‌ها را فیلتر و پاکسازی (Sanitize) کنید. برای این کار از توابعی نظیر htmlspecialchars() و فیلترهای داخلی PHP مانند filter_input() استفاده کنید.

// نمونه پاکسازی ایمن داده ورودی با فیلتر داخلی
$clean_email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
if (filter_var($clean_email, FILTER_VALIDATE_EMAIL)) {
    echo "ایمیل معتبر است.";
} else {
    echo "ایمیل نامعتبر است!";
}

پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

آموزش کامل کار با آرایه‌ها و اشیاء در جاوا اسکریپت: ایجاد، دستکاری و پیمایش
1403/06/02 21:08

آموزش کامل کار با آرایه‌ها و اشیاء در جاوا اسکریپت: ایجاد، دستکاری و پیمایش

مطالعه بیشتر
کاربرد تگ‌های meta، title و keywords در سئو: راهنمای جامع بهینه‌سازی وب‌سایت
1402/05/25 00:16

کاربرد تگ‌های meta، title و keywords در سئو: راهنمای جامع بهینه‌سازی وب‌سایت

مطالعه بیشتر
کار با فیلترهای CSS: آموزش استفاده از blur، brightness و contrast برای افکت‌های تصویری جذاب
1403/08/11 21:08

کار با فیلترهای CSS: آموزش استفاده از blur، brightness و contrast برای افکت‌های تصویری جذاب

مطالعه بیشتر
آموزش مفاهیم پایه‌ای اشیاء در جاوا اسکریپت: تعریف، ویژگی‌ها و متدها
1403/06/02 20:49

آموزش مفاهیم پایه‌ای اشیاء در جاوا اسکریپت: تعریف، ویژگی‌ها و متدها

مطالعه بیشتر
آموزش جامع ساخت فرم ثبت‌نام کاربران با PHP و MySQL طبق اصول امنیتی گوگل
1405/05/13 21:34

آموزش جامع ساخت فرم ثبت‌نام کاربران با PHP و MySQL طبق اصول امنیتی گوگل

مطالعه بیشتر
آموزش کامل Super Global ها در PHP (متغیرهای سراسری)
1405/05/01 19:58

آموزش کامل Super Global ها در PHP (متغیرهای سراسری)

مطالعه بیشتر
آموزش جامع و اصولی جستجو در دیتابیس با PHP و MySQL (مطابق استانداردهای گوگل)
1405/05/13 21:26

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

مطالعه بیشتر
معرفی MySQL و phpMyAdmin: راهنمای جامع مدیریت پایگاه داده برای توسعه‌دهندگان وب
1405/05/04 23:32

معرفی MySQL و phpMyAdmin: راهنمای جامع مدیریت پایگاه داده برای توسعه‌دهندگان وب

مطالعه بیشتر
آشنایی با Inheritance در CSS: اصول وراثت و مدیریت استایل‌ها
1403/08/12 19:59

آشنایی با Inheritance در CSS: اصول وراثت و مدیریت استایل‌ها

مطالعه بیشتر
آموزش جامع Session در PHP به زبان ساده + پروژه عملی شبیه‌ساز
1405/05/01 20:07

آموزش جامع Session در PHP به زبان ساده + پروژه عملی شبیه‌ساز

مطالعه بیشتر
آموزش استفاده از position در CSS: نحوه موقعیت‌دهی عناصر در صفحات وب
1403/08/09 20:59

آموزش استفاده از position در CSS: نحوه موقعیت‌دهی عناصر در صفحات وب

مطالعه بیشتر
آموزش HTML: اولین گام برای طراحی سایت و سئو حرفه‌ای
1402/05/18 00:00

آموزش HTML: اولین گام برای طراحی سایت و سئو حرفه‌ای

مطالعه بیشتر

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