Register globals چیست؟

از راهنمای WIKI پرشین هلپ
پرش به: ناوبری, جستجو

یکی از مواردی که در برنامه نویسی PHP همواره باید مد نظر قرار گیرد استفاده از register_globals میباشد. استفاده از این مورد به شما این امکان را میدهد تا به متغیرها فرم ها و URL ها به شکل دیگری دسترسی داشته باشید. مثلا در یک URL به شکل file.php?var=foo بتوانید به متغیری به نام $var دسترسی داشته باشید.

متاسفانه برخی از برنامه نویسان نسبت به استفاده از این امکان چندان نظر مساعدی ندارند و ترجیح میدهند آن را در فایل php.ini غیرفعال سازند. البته دقت داشته باشید که این امکان به صورت پیش فرض در PHP 4.2.0 غیرفعال میباشد.

لذا این احتمال وجود دارد که کدی که شما مینویسید تحت برخی از وب سرورها جواب ندهد. و به همین دلیل ممکن است شما ترجیح دهید راحتی کاری که این امکان برای شما فراهم میکند را فراموش کرده و در عوض کدی بنویسید که اطمینان داشته باشید بر روی همه وب سرورها جواب میدهد!

مدتها قبل بدلیل وجود ریسک امنیتی بالا در استفاده از Register_globals برای برنامه نویسی PHP، این تعریف از نگارشهای بالاتر PHP بصورت پیش فرض غیرفعال گردید اما هنوز هم برخی از مشتریان سعی در استفاده از نگارشهای قدیمی CMSها را داشته و لذا جهت استفاده آنها در نگارش جدید دچار مشکل می شوند. برای رفع این مشکل (و البته عدم توصیه اکید ما!) می توانید فایلی به نام .htacess تعریف کنید (دقت کنید که نقطه اول فایل فراموش نشود!) و آنرا در root سایت خود (معمولا شاخه Public_htm) بگذارید. سپس داخل آن عبارت زیر را جهت فعال سازی Register_Globals بنویسید: php_value register_globals 1

دقت کنید که می بایست خط فوق در بالاترین لاین فایل قرار داشته باشد!

از دید ما راه صحیح دسترسی به متغیرها از طریق آرایه مرتبطشان می‌باشد. مثلا در مثال بالا به جای استفاده از $var از $_GET['var'] استفاده نمایید و به همین شکل به جای استفاده از $HTTP_USER_AGENT عبارت $_SERVER['HTTP_USER_AGENT'] را به کار گیرید.

آرایه های اصلی عبارتند از $_GET, $_POST, $_COOKIE, $_SERVER که برحسب اینکه متغیرها از کجا می آیند نامگذاری شده اند.

جعبه‌ابزار