آموزش کامل Super Global ها در PHP (متغیرهای سراسری)
متغیرهای Super Global در PHP چیستند؟
در زبان برنامهنویسی PHP، متغیرهای سوپر گلوبال (Superglobals) متغیرهای پیشفرضی هستند که در تمامی بخشهای کد، بدون توجه به Scope (حوزه دسترسی) در دسترس هستند. یعنی شما میتوانید درون توابع، کلاسها یا فایلهای مختلف به طور مستقیم و بدون نیاز به تعریف کلیدواژه global به آنها دسترسی داشته باشید.
این متغیرها به صورت آرایههای انجمنی (Associative Arrays) ذخیره میشوند و اطلاعات بسیار مهمی درباره سرور، درخواستهای کاربر، کوکیها، جلسات (Sessions) و فایلهای آپلود شده را در خود نگه میدارند.
لیست کامل Super Global های PHP
زبان PHP دارای ۹ متغیر سوپر گلوبال اصلی است که در ادامه به معرفی و بررسی پرکاربردترین آنها میپردازیم:
- $GLOBALS: برای دسترسی به متغیرهای سراسری از هر نقطه در اسکریپت PHP.
- $_SERVER: حاوی اطلاعاتی درباره هدرها، مسیرها و مکانهای اسکریپت.
- $_REQUEST: شامل دادههای ارسالی از طریق متدهای GET و POST و همچنین COOKIE.
- $_POST: برای جمعآوری دادههای ارسال شده از طریق فرمهای HTML با متد POST.
- $_GET: برای جمعآوری دادههای ارسال شده از طریق URL یا فرمهای HTML با متد GET.
- $_FILES: حاوی اطلاعات فایلهای آپلود شده در سرور.
- $_ENV: برای دسترسی به متغیرهای محیطی سیستمعامل یا سرور.
- $_COOKIE: جهت دریافت و مدیریت کوکیهای ذخیره شده در مرورگر کاربر.
- $_SESSION: برای مدیریت جلسات (Sessions) کاربر و ذخیره اطلاعات در طول گشتوگذار در وبسایت.
بررسی دقیق کاربردیترین سوپرگلوبالها همراه با کد
۱. متغیر $_SERVER
این متغیر اطلاعاتی نظیر آدرس IP کاربر، نوع مرورگر، مسیر اجرای اسکریپت جاری و اطلاعات هدر را در اختیار ما قرار میدهد. به مثال زیر توجه کنید:
echo $_SERVER['PHP_SELF']; // مسیر اسکریپت جاری
echo "";
echo $_SERVER['SERVER_NAME']; // نام سرور میزبان
echo "";
echo $_SERVER['HTTP_USER_AGENT']; // اطلاعات مرورگر و سیستمعامل کاربر
echo "";
echo $_SERVER['REMOTE_ADDR']; // آدرس IP کاربر
۲. متغیرهای $_GET و $_POST
از این دو متغیر به وفور برای دریافت اطلاعات ارسالی از کاربران از طریق فرمها استفاده میشود. متد GET اطلاعات را در نوار آدرس مرورگر (URL) نمایش میدهد در حالی که متد POST اطلاعات را به صورت مخفی و امنتر ارسال میکند.
مثال برای دریافت داده به روش GET (ارسال از طریق URL مانند index.php?name=Ali):
if (isset($_GET['name'])) {
// پاکسازی دادهها برای جلوگیری از حملات امنیتی
$name = htmlspecialchars($_GET['name']);
echo "سلام " . $name . " خوش آمدید!";
}
مثال برای دریافت داده از فرم HTML به روش POST:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// دریافت داده ایمن شده از فیلد username
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_SPECIAL_CHARS);
echo "نام کاربری دریافتی: " . $username;
}
۳. متغیر $_SESSION
سشنها یا جلسات کاری برای ذخیره اطلاعات کاربر در میان صفحات مختلف سایت استفاده میشوند. به عنوان مثال، حفظ وضعیت ورود کاربر (Login). برای کار با $_SESSION حتماً باید در ابتدای فایل تابع session_start() را فراخوانی کنیم.
// شروع سشن
session_start();
// ذخیره اطلاعات در سشن
$_SESSION["user_id"] = 1024;
$_SESSION["role"] = "admin";
echo "سشن با موفقیت تنظیم شد.";
نکات امنیتی بسیار مهم در استفاده از Super Globalها
از آنجایی که اکثر متغیرهای سوپر گلوبال (مانند $_GET, $_POST, $_COOKIE) مستقیماً دادهها را از مرورگر کاربر دریافت میکنند، به شدت در معرض حملات سایبری مانند XSS (تزریق کد) و SQL Injection قرار دارند. هرگز دادههای ورودی را مستقیماً در خروجی چاپ نکنید یا درون پایگاه داده ننویسید.
- همیشه از توابع پاکسازی و اعتبارسنجی مثل
filter_var()وhtmlspecialchars()استفاده کنید. - از متد POST برای ارسال اطلاعات حساس مانند کلمات عبور استفاده نمایید.
- برای جلوگیری از حملات جعل درخواست متقاطع (CSRF)، از توکنهای امنیتی همراه با متغیرهای POST استفاده کنید.
پرسش و پاسخ
نظری یافت نشد
برای ارسال نظر ابتدا وارد شوید