PHP __PHP_Incomplete_Class Объект с моими данными $ _SESSION - PullRequest
38 голосов
/ 06 января 2010

У меня есть настройка сайта, которая при загрузке страницы превращает все пользовательские строки в объекты SafeString. Для тех, кто не знаком с SafeString, он в основном заставляет пользователя выводить очищенные данные, предотвращая XSS и все такое.

В любом случае, есть проблема. Мой массив $ _SESSION заполняется __PHP_Incomplete_Class Object. Из того, что я прочитал, это происходит из-за того, что класс не инициализируется перед сеансом, а затем сохраняется объекты класса в сеансе.

Вот мой код:

require_once __WEBROOT__ . '/includes/safestring.class.php'; 

$temp = array
(
   &$_SERVER, &$_GET, &$_POST, &$_COOKIE,
   &$_SESSION, &$_ENV, &$_REQUEST, &$_FILES,
   &$HTTP_SERVER_VARS, &$HTTP_GET_VARS,
   &$HTTP_POST_VARS, &$HTTP_COOKIE_VARS,
   &$HTTP_POST_FILES, &$HTTP_ENV_VARS
); 

function StringsToSafeString(&$array)
{
   foreach ($array as $key => $value)
   {
      if (is_string($array[$key]))
      {
         $array[$key] = new SafeString($value);
      } 

      if (is_array($array[$key]))
      {
         StringsToSafeString($array[$key]);
      }
   }
}

StringsToSafeString($temp);

unset($temp);

Я не могу придумать способ переписать это, чтобы решить проблему: /

Есть идеи?

Ответы [ 11 ]

0 голосов
/ 12 декабря 2012

Возможно, вы просто звоните,

session_start();
session_start();

дважды в вашем коде. Позвони один раз. Проверьте необходимые классы PHP для повторов. Это было исправление для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...