Buenas tengo un problema, quisiera propagar la sesion a todas las paginas que navega el usuario.
En todas las paginas tengo un bloque que comprueba si esta iniciada la sesion, si esta inicia le doy la bienvenida cn un echo $_SESSION['usuario'] y sino esta inicia muestra un formulario que pide usuario y contraseña para iniciar sesion
El problema es que cuando inicio sesion en el index, me reconoce que esta inciada pero cuando paso a otra pagina no me la coje.
Código PHP:
<?php
/*compruebo si la sesion esta vacia, si esta llena le doy la bienvenida y
le ofrezco opciones de panel de usuario y cierre sesion. Si esta vacia le muestro un formulario
de usuario y contraseña*/
if (isset($_SESSION['usuario']))
{
echo "<div class='sesionabierta'><P>Bienvenido ".$_SESSION['usuario']."</p>";
echo "<a class='enlace' href='#'> Panel de usuario</a><br>";
$conexion=mysql_connect("localhost", "root", "") or die('Fallo en la conexion');
<?php echo '<img src="images/shutdown.png"><a href="shutdown.php">Cerrar sesion</a></div>';}
else{?>
<div class="sesion">
<p>Inicio sesión</p>
<div class="formulario">
<form action="sesion.php" method="post" class="formulario" enctype="multipart/form-data">
<input type="text" value="Usuario" name="usuario" size="15"/><br />
<input type="password" value="Contraseña" name="password" size="15"/><br /><br />
<input type="submit" value="Inicio sesión" />
</form>
la primera vez que entra al no estar iniciada la sesion pues te muestre le formulario directamente, la accion del formulario es esta
Código PHP:
$consulta="SELECT * FROM usuarios WHERE user='$usuario' AND pass='$password';";
$rs=mysql_query($consulta,$conexion);
if (mysql_num_rows($rs)!=0){
//usuario y contraseña válidos
//defino una sesion y guardo datos
session_cache_limiter('nocache,private');
session_name('usuario');
session_start();
$_SESSION['usuario']=$usuario;
session_register("autentificado");
$autentificado = "SI";
require_once('index.php');
}else {
//si no existe le mando otra vez a la portada
echo "<script type='text/javascript'>alert('Usuario o contrase\u00f1a incorrectos');</script>";
require_once('index.php');
}
una vez valida los datos de usuairo y contrasela cn la bd inicia sesion y un monton de cosas mas: coje como variable el nombre del usuario, etc.
al final tiene un require_once que me carga el index de nuevo y asi el index vuelve a comprobar la sesion y esta vez si esta iniciada y me sale lo del panel de usuario.
El problema viene cuando me voy a otra pagina, y tengo el mismo if que en el index pero ya no me coje la sesion, este seria el codigo de la otra pagina
Código PHP:
if (isset($_SESSION['usuario']))
{
echo "<div class='sesionabierta' style='margin-bottom:50px;'><P>Bienvenido ".$_SESSION['usuario']."</p>";
echo "<a href='panel.php'> Panel de usuario</a><br>";
echo '<a href="shutdown.php">Cerrar sesion</a></div>';}
else{?>
<div class="sesion">
<p>Inicio sesión</p>
<div class="formulario">
<form action="sesion.php" method="post" class="formulario" enctype="multipart/form-data">
<input type="text" value="Usuario" name="usuario" size="15"/><br />
<input type="password" value="Contraseña" name="password" size="15"/><br /><br />
<input type="submit" value="Inicio sesión" />
</form>
lo mismo que el index y aqui no me funciona.
what happend???