Показать сообщение отдельно

  #8  
Старый 26.04.2008, 03:04
d_x
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 не трогаем
  
}