Tengo una configuración de sitio que, al cargar la página, convierte todas las cadenas enviadas por el usuario en objetos SafeString. Para aquellos que no están familiarizados con SafeString, básicamente obliga al usuario a hacer eco de datos desinfectados que previenen XSS y otras cosas ...
De todos modos, hay un problema. Mi matriz $ _SESSION se está llenando con __PHP_Incomplete_Class Object
. Según lo que he leído, esto se debe a que no se inicializó la clase antes de la sesión y luego se almacenaron los objetos de la clase en la sesión.
Aquí está mi código:
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);
No puedo pensar en una manera de volver a escribir esto que resolvería el problema:/
¿Alguna idea?
¡¡Gran respuesta !!! –
Gran respuesta. +1. Me encanta PHP: D Mi problema era un viejo archivo de caché. Supondríamos un mensaje de error como: "El objeto no se pudo deserializar, porque no se pudo encontrar" ... –
"requiere la clase ANTES de llamar a session_start()" – max4ever