پنج‌شنبه ۹ فروردین ۱۴۰۳ |  عضویت / ورود






[ بخش اصلی آموزشها | افزودن آموزش | داری بیشترین امتیاز | دارای بیشترین بیننده | جدیدترین نظرات ]

چگونه register_globals را بدون دسترسی به php.ini برابر با off یا on کنیم؟


Sunday, 2011 June 05   نویسنده: Hamid   تعداد بازدید: 15488 بار  #طراحي صفحات وب   امتیاز متوسط: امتیازی داده نشده است

ممکن است در نصب برخی CMSها از شما خواسته شود که register_globals را فعال و یا غیرفعال کنید.

برای این کار، اگر به روت سرور و فایل php.ini دسترسی دارید که خیلی راحت آن فایل را باز کنید و این کد را پیدا کنید و مقدار مقابل آن را به on یا off تغییر دهید. کد:

register_globals =

اما موضوع این است که معمولاً شما یک مشتری روی سرور هستید و نه مدیر سرور. پس به فایل php.ini دسترسی ندارید.

در این صورت یکی از دو راه زیر را طی کنید، هر کدام جواب داد، از آن استفاده کنید:

1- فرض کنید می‌خواهیم این ماژول را غیرفعال کنیم: در روت سایت خود (یعنی در پوشه www یا public_html یا htdocs) یک فایل به نام و پسوند php.ini بسازید و کد زیر را داخل آن قرار دهید:

register_globals = off

برای فعال کردن، به جای off بنویسید on

 

2- اگر با روش بالا باز هم نتوانستید خطای مربوط به این ماژول را رفع کنید، در روت، یک فایل به نام htaccess. (نقطه در ابتدای htaccess است) بسازید و این عبارت را در آن بنویسید:

php_flag register_globals off

 

یکی از روش‌های بالا باید مشکل شما را رفع کند.

 

register_globals چیست؟

نقل از سایت webdesign.org : یکی از مواردی که در برنامه نویسی PHP همواهر باید مد نظر قرار گیرد استفاده از register_globals میباشد. استفاده از این مورد به شما این امکان را میدهد تا به متغیرهایی فرمها و URL ها به شکل دیگری دسترسی داشته باشید. مثلا در یک URL به شکل file.php?var=foo بتوانید به متغیری به نام $var دسترسی داشته باشید.
متاسفانه برخی از برنامه نویسان نسبت به استفاده از این امکان چندان نظر مساعدی ندارند و ترجیح میدهند آن را در فایل php.ini غیرفعال سازند. البته دقت داشته باشید که این امکان به صورت پیش فرض در PHP 4.2.0 غیرفعال میباشد.
لذا این احتمال وجود دارد که کدی که شما مینویسید تحت برخی از وب سرورها جواب ندهد. و به همین دلیل ممکن است شما ترجیح دهید راحتی کاری که این امکان برای شما فراهم میکند را فراموش کرده و در عوض کدی بنویسید که اطمینان داشته باشید بر روی همه وب سرورها جواب میدهد!
از دید ما راه صحیح دسترسی به متغیرها از طریق آرایه مرتبطشان می‌باشد. مثلا در مثال بالا به جای استفاده از $var از $_GET['var'] استفاده نمایید و به همین شکل به جای استفاده از $HTTP_USER_AGENT عبارت $_SERVER['HTTP_USER_AGENT'] را به کار گیرید.
آرایه های اصلی عبارتند از $_GET, $_POST, $_COOKIE, $_SERVER که برحسب اینکه متغیرها از کجا می آیند نامگذاری شده اند.


.



ارسال سؤال یا نظر


1- محسن:
بوسیله: , در: Sunday, 2013 February 10-کد: 6198
البته ذکر این مطلب که فعال بودن مورد فوق می تواند مشکلات امنیتی برای سایت ایجاد نماید.


2- سارا:
بوسیله: , در: Monday, 2014 November 24-کد: 12432
خیلی ممنون از اطلاعات مفیدتون که در اختیار ما قرار دادید.
منتظر لطف و رحمت خدا باشید

Tutorials ©