utilizo una clase para el sesión como Phil sugirió. Si llama a session_start() manualmente, está vinculando su código a la implementación de la sesión PHP. Mi llamada a session_start está protegido por mi clase de sesión con la siguiente:
if (!isset($_SESSION))
{
// If we are run from the command line interface then we do not care
// about headers sent using the session_start.
if (PHP_SAPI === 'cli')
{
$_SESSION = array();
}
elseif (!headers_sent())
{
if (!session_start())
{
throw new Exception(__METHOD__ . 'session_start failed.');
}
}
else
{
throw new Exception(
__METHOD__ . 'Session started after headers sent.');
}
}
Editar:
El código anterior entrar en su clase de sesión (y probablemente ser llamado de alguna manera por su constructor). La línea de comando PHP crea una matriz en lugar de llamar a session_start (que no funciona en la línea de comandos).
Al probar el código que se basa en variables de sesión que se burlan de las variables de sesión en mi prueba:
$_SESSION = array('key1' => 'value you want', 'key2' => 'etc.');
Esto le permite probar todos los posibles valores de la sesión que recibirá en la página.
La prueba de que los valores de la sesión se crean pertenece con el código que los crea en mi opinión, por lo que burlarse de su existencia me parece bien. De esta forma, está probando cada unidad por separado en lugar de combinarlas y mantener los valores de sesión entre las pruebas.
Abrí el acceso a los datos de sesión en una clase dedicada y me burlé de eso en las pruebas. – Phil
Las sesiones de CI son de hecho cookies, así que sí, funcionan en los navegadores –
Gracias Phil y Damien por la respuesta .. @Phil ¿Cómo lo haría? Lo siento, soy totalmente novato en esto ... ¿Puedo pedir un ejemplo o procedimientos si está bien con usted ... thx –