سوپرگلوبال‌ها در PHP

php superglobals
20 آبان 1403

درک و شناخت Superglobal ها در PHP

در برنامه‌نویسی با PHP، مفهومی با نام Superglobals وجود دارد که شامل متغیرهای خاصی می‌شود که به صورت خودکار توسط سیستم PHP پر می‌شوند و از هر جای اسکریپت قابل دسترسی هستند. این متغیرها که به شکل آرایه‌های خاصی ارائه می‌شوند، بسیاری از اطلاعات کاربردی را در خود جای می‌دهند، مانند اطلاعات فرمی که کاربر ارسال کرده یا اطلاعات مربوط به کوکی‌ها و سیشن‌ها.

استفاده از Superglobals باعث می‌شود تا برنامه‌نویسان بدون نیاز به ارسال دستی داده‌ها بین صفحات مختلف، به اطلاعات لازم دسترسی داشته باشند. به عنوان مثال، زمانی که نیاز دارید اطلاعات فرمی که کاربر پر کرده را بررسی و مدیریت کنید، می‌توانید از متغیر $_POST استفاده کرده و بدون نیاز به ارسال مستقیم اطلاعات از آن بهره گیرید.

مثالی از Superglobals:

یکی از نمونه‌های رایج در استفاده از Superglobals، استفاده از $_SERVER برای دسترسی به اطلاعات مربوط به سرور و مسیرهای درخواست کاربر است. این آرایه دارای مقادیر مختلفی مانند مسیر فایل درخواستی، اطلاعات پروتکل و آدرس IP کاربر می‌باشد.

یکی دیگر از مفاهیم کلیدی در استفاده از Superglobals، دقت در محافظت از امنیت داده‌هاست. به دلیل دسترسی آزاد به این متغیرها از هر نقطه‌ای از اسکریپت، برنامه‌نویسان باید اقدامات امنیتی مناسبی مانند فیلتر کردن و اعتبارسنجی داده‌ها را انجام دهند تا از نفوذهای احتمالی جلوگیری کنند.

کد نمونه برای PHP Superglobals

<?php
// نمایش اطلاعات سرور با استفاده از $_SERVER
echo 'آدرس IP شما: ' . $_SERVER['REMOTE_ADDR'] . "<br>";
echo 'نام سرور: ' . $_SERVER['SERVER_NAME'] . "<br>";
// پردازش اطلاعات فرم با استفاده از $_POST
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$name = $_POST['name'];
echo 'نام شما: ' . htmlspecialchars($name) . "<br>";
}
?>

توضیح خط به خط کد

<?php: شروع کد PHP
echo 'آدرس IP شما: ' . $_SERVER['REMOTE_ADDR'] . "<br>";: این خط آدرس IP کاربر را نمایش می‌دهد.
echo 'نام سرور: ' . $_SERVER['SERVER_NAME'] . "<br>";: این خط نام سرور را نمایش می‌دهد.
if ($_SERVER['REQUEST_METHOD'] === 'POST'): بررسی می‌کند که آیا درخواست با استفاده از روش POST ارسال شده است.
$name = $_POST['name'];: مقدار نام را از آرایه $_POST دریافت می‌کند.
echo 'نام شما: ' . htmlspecialchars($name) . "<br>";: نام دریافتی را نمایش داده و از htmlspecialchars برای امن‌سازی استفاده می‌کند.
?>: پایان کد PHP

سوالات متداول

؟

فرق بین $_GET و $_POST چیست؟

؟

چگونه می‌توان اطلاعات کوکی‌ها را با سوپرگلوبال‌ها بدست آورد؟

؟

آیا می‌توان به سوپرگلوبال‌ها مقدار داد؟