Sessions

Hola experto, estoy trabajando con sessiones y evidentemente en algo fallo
Trabajo con 3 paginas;un formulario, desp en otra el código del login(donde declaro las session) y la página principal que entra si el usuario se logueo.. Hay algo que fallo porque tipendo en la barra la dirección de la página principal entra igual sin pasar por el login.. Te agradecería si me podes explicar con algún ejemplo con código, Desde ya muchs gracias experto, Un saludo! ([email protected])
Respuesta
1
Al principio de cada página una vez abierta la sesión, tiene que estar siempre:
<?php
session_start();
?>
antes de todo, para que no se rompa la sesión.
Que exista o no la sesión no quiere decir que se controle automáticamente un 'aceso por login'. Eso debes controlarlo tu. Por ejemplo, puedes declarar una variable de sesión con el nombre del usuario y debes comprobar en cada página que entras si existe o no, para mostrar la página o producir un error.
Por ejemplo:
<?php
if (isset($_SESSION["login"])) {
    echo "Bienvenido señor " . $_SESSION["login"];
} else {
    echo "Lo sentimos pero usted no tiene acceso. Debe hacer login."
}
?>
Muy buena tu respuesta experto, pero no le encuentro la vuelta a algo, me parece que hay algo que estoy poniendo mal y no logro darme cuenta que es, mira te paso el código, Bueno el form no te lo envío, es un form normal en html... Me parece que el problema esta en el login...
****login.php****
<?php
include('conexion.php');
$nick = $_POST['nick'];
$pass = $_POST['pass'];
$sql = "select * from login where nick='$nick' and pass='$pass'";
$res = mysql_query($res);
  if(mysq_num_rows($res)){
session_start();
$_SESSION[usuario] = $res[nick];
header('location:principal.php');
}else{
header('location:form.html');}
?>
**********principal.php*********************
<?php
 if(isset($_SESSION['usuario'])){
echo ' //ACA MUESTRO LA PAGINA PRIVADA ';
}else{
echo "DEVE LOGUEARSE";}
?>
Ese es mi código, haciendo de esta forma siempre entra al segundo echo(DEBE LOGUEARSE)Si me podes guiar te lo voy a agradecer mucho, Un saludo! ([email protected])
Como no se ve en el código que suministras, te recuerdo que al principio de principal.php debe existir también el 'session_start();' para que la sesión no se pierda, y que no debes haber hecho ningún 'echo' o similar antes de eso, pues estas instrucciones envían ya las cabeceras y si se han enviado las cabeceras, ya no estás a tiempo de iniciar la sesión.
Como el resto me parece normal, supongo que el problema está en la página principal.php, así que si persiste el problema, envía el código desde el principio de la página.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas