Mira, si queres usar sesiones, y algun script externo que trabaje sobre estas (llamdo con i
nclude_once,
include,
requiere...)tenes que usar
session_start(); dentro del script principal. Esta sentencia solo debe aparecer una vez, y solo en el script principal (no en los que se llamen mediante
include o el metodo que sea..)
Por ejemplo supongamos que el script principal sea
sesion.php, y tenemos un script llamdo
sesion_check.php que tiene una rutina que comprueba la variable $_SESSION, es decir, que controla si esta definida, quevalor tiene, etc..un ejemplo sencillo de ambos script seria el siguiente:
sesion.php<?php
echo "A continuacion usare un script externo para trabajar con \$_SESSION<br />\n";
include_once("sesion_check.php");
?>
Y el script
sesion_check.php seria este:
<?php
if( isset($_SESSION['nombre']) ) {
echo "\$_SESSION['nombre']: ".$_SESSION['nombre'];
}
else
{
$_SESSION['nombre'] = "UNSIGNED";
echo "\$_SESSION['nombre'] creada con valor ".$_SESSION['nombre'];
}
?>
En este segundo (que usara como 'externo') no uso
session_start(); ya que lo debo usar en el script principal(
sesion.php).
En el script principal
session_start(); debe solo usarse
una vez, y de ser posible debe ser la primera linea, o el interprete de PHP nos dara un Warning:
<?php
echo "xD"; //he agregado esta linea ANTES de session_start() para provocar un Warning
echo "A continuacion usare un script externo para trabajar con \$_SESSION<br />\n";
include_once("sesion_check.php");
?>
xD
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\AppServ\www\test\sesion.php:2) in C:\AppServ\www\test\sesion.php on line 3
A continuacion usare un script externo para trabajar con $_SESSION
$_SESSION['nombre']: UNSIGNED
Espero haber aclarado algunas dudas..
Saludos