register_globals
سلام ،
دوست عزیز مشکل شما به register_globals مربوط میشه.
این مربوط به تنظیمات php است.
اگر register_globals=on باشه ، شما نیازی به تعریف متغییر ها ندارید.
اگر register_global=off باشد ، شما حتما باید نوع متغییر ها رو مشخص کنید.
به صورت پیشفرض روی local این متغییر برای شما on بوده و بر روی سرور off و از اونجا که شما به تنظیمات سرور دسترسی ندارید تنها راهش اینه که کدهاتون رو تغییر بدید.
این رو بگم که register_globals به مسائل امنیتی مربوط میشه و بهترین حالت اون off است.
تعریف متغییر ها هم سادست. مثلا در مورد مشکل شما:
اگر mail$ بصورت post ارسال میشه اینگونه استفاده کنید:
اگر get است:
در صورتی که کدهای سایتتون رو قبلا نوشتید و تعداد دستورات و فایلها زیاد هستند و مشکله که تمامی متغییر های سایتتون رو بدین روش ویرایش کنید. میتونید از این کد در ابتدای سایتتون (در header) درست قبل از انجام هر کاری استفاده کنید:
PHP:
if (phpversion() < "4.1.0") {
$_GET = $HTTP_GET_VARS;
$_POST = $HTTP_POST_VARS;
$_SERVER = $HTTP_SERVER_VARS;
}
// set all GET/POST vars
if($_GET)
{
foreach($_GET as $key => $val)
{
$$key = $val;
}
}
// Get all vars from the POST method. Assign variable and value
if($_POST)
{
foreach($_POST as $key => $val)
{
$$key = $val;
}
}
احتمالا در استفاده از کوکی ها هم به مشکل بر میخوری که میتونی از آرایه COOKIES_$ استفاده کنی.
باتشکر
نبی