У меня есть настройка сайта, которая при загрузке страницы превращает все пользовательские строки в объекты 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);
Я не могу придумать способ переписать это, чтобы решить проблему: /
Есть идеи?