
26.04.2008, 03:04
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме: 4137635
Репутация:
2407
|
|
Понял, почему сессия админская не начиналась, если фиксить register_globals. Скрипт, который вставляется в начало всех исходников, просто удалял все переменные (даже неглобальные), которые передавались из cookies. Например, удалялась переменная $_SESSION['username'], потому что $username было определено и бралось из cookies.
Вот более правильный код:
PHP код:
if(@ini_get('register_globals'))
{
if(isset($_REQUEST['GLOBALS'])) die('GLOBALS overwrite attempt detected');
$nounset=array('GLOBALS','_GET','_POST','_COOKIE', '_REQUEST','_SERVER','_ENV','_FILES','_SESSION', 'nounset','input');
$input=array_merge($_REQUEST,$_FILES);
foreach($input as $k=>$v)
{
if(!in_array($k,$nounset) && isset($GLOBALS[$k]))
unset($$k); //удаляем ТОЛЬКО глобальную переменную. Остальные массивы типа $_SESSION не трогаем
}
}
|
|
|