Foros del Web » Programando para Internet » PHP »

Comprobación de sesión que funciona al revés

Estas en el tema de Comprobación de sesión que funciona al revés en el foro de PHP en Foros del Web. Holas. Atascado en mi desconociemiento. Resulta que pongo un código de comprobación de sesión en cada una de las páginas del sitio y en lugar ...
  #1 (permalink)  
Antiguo 14/11/2014, 06:26
 
Fecha de Ingreso: noviembre-2014
Ubicación: Madrid
Mensajes: 81
Antigüedad: 9 años, 5 meses
Puntos: 1
Comprobación de sesión que funciona al revés

Holas.
Atascado en mi desconociemiento. Resulta que pongo un código de comprobación de sesión en cada una de las páginas del sitio y en lugar de enviarme a la correcta me manda de nuevo al login.
Creo que el login funciona correctamente. Pues cuando ejecuto directamente la página php a la que manda el login hace lo que he dicho de enviarme de nuevo al login. Vamos que me dice que no estoy logueado, cuando "creo", que si lo estoy.

Por si no he sido claro aquí va el proceso
Página de login manda a una php en la que se valida el usuario (ésta creo que funciona perfectamente) pues en caso de no estar logueado me remite de nuevo al login y en caso de sí me remite a la pral.php (que es la página principal del sitio)
En la página que valida está este código:
Código:
session_start();  
  //Almacenamos el nombre de usuario en una variable de sesión usuario
  $_SESSION["usuario"] = $_POST["nome_us"];
Donde nome_us es el nombre de usuario que puso en el login

En caso de que el user y el pass sean correctos la página que valida nos manda a la pral.php (y lo hace)

Y entonces al inicio de la página pral.php pongo esto:
Código:
session_start();

//validamos si se ha hecho o no el inicio de sesion correctamente
//si no se ha hecho la sesion nos regresará al login
if(!isset($_SESSION["usuario"])) 
{
echo '<script type="text/javascript">
location.href = "login.html";
</script>';
}

BIENVENIDO
	
}
Pues siempre me manda al login nunca me da la Bienvenida (que ingrata!).

¿Alguién puede decirme dónde está el error?
  #2 (permalink)  
Antiguo 14/11/2014, 06:32
Avatar de andres_15_  
Fecha de Ingreso: septiembre-2008
Ubicación: Cali
Mensajes: 232
Antigüedad: 15 años, 7 meses
Puntos: 7
Respuesta: Comprobación de sesión que funciona al revés

Depura tu código, haz un print_r() a tu variable de sesion para ver que contiene y asi veras si en realidad esta guardando tu usuario o no.

Código PHP:
print_r($_SESSION); 
  #3 (permalink)  
Antiguo 14/11/2014, 07:17
Avatar de HackID1  
Fecha de Ingreso: febrero-2013
Ubicación: En Update
Mensajes: 492
Antigüedad: 11 años, 2 meses
Puntos: 17
Respuesta: Comprobación de sesión que funciona al revés

Donde compruebas, que el usuario ha iniciado sesión y que ese usuario ha introducido correctamente usuario y contraseña para continuar?, supongo que de una BD.

Bien igual forma debería dejarte entrar, pero por si acaso prueba con este código sustituye tu 2 código por este, en sí este usa solo PHP total.

Recuerda que el código irá arriba del todo al comienzo de tu página .php

Código PHP:
Ver original
  1. <?php
  2.  
  3.     //creamos la sesion
  4.     session_start();
  5.    
  6.     //validamos si se ha hecho o no el inicio de sesion correctamente.
  7.     if (!isset($_SESSION['usuario'])) {
  8.    
  9.         header("Location: login.php");
  10.         exit();
  11.     }
  12.    
  13. ?>

Al igual comprueba que tu variable SESSION de verdad te guarda tu usuario.
__________________
Puntuar +1 es buena forma de dar las gracias. :P
Your Time is limited, so don't waste it living someone else´s life.
Por: HackID1
  #4 (permalink)  
Antiguo 14/11/2014, 14:16
 
Fecha de Ingreso: noviembre-2014
Ubicación: Madrid
Mensajes: 81
Antigüedad: 9 años, 5 meses
Puntos: 1
Respuesta: Comprobación de sesión que funciona al revés

No llega la variable de una página a otra.
Para saber si había algo en la verificaciones de usuario he quitado todas las líneas de verificación de usuario y password. Vamos que he dejado la página que valida pelada. Y no llega la variable de esta a la pral y entonces ésta me remite de nuevo al login.

Concretando:
1) Me logueo con datos que sé son correctos en la base de datos
2) Me lleva a la página de validación (que la he dejado pelada). Su código:
Código:
mysql_connect('localhost:8889','elnombredelusuario','lacontraseña')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('fcts')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
 
/*caturamos nuestros datos que fueron enviados desde el formulario mediante el metodo POST
**y los almacenamos en variables.*/
$usuario = $_POST["nome_us"];   
$password = $_POST["pass_us"];


$result = mysql_query("SELECT * FROM profes WHERE Nombre_Profe = '$usuario'");

  //Creamos sesión
  session_start();  
  //Almacenamos el nombre de usuario en una variable de sesión usuario
  $_SESSION["usuario"] = $_POST["nome_us"];
//Y sin comprobar nada del usuario me lleva la página pral
   echo '<script type="text/javascript">
    location.href = "pral.php";
  </script>';
//Mysql_free_result() se usa para liberar la memoria empleada al realizar una consulta
mysql_free_result($result);
en la página pral.php he puesto el print y sale vacío. Su código:
Código:
<?php
//creamos la sesion
session_start();

print_r($_SESSION);
?>
<h1>BIENVENIDO</h1>
<a href="logout.php">Cerrar Sesión</a>
Pone Array () y el Bienvenido. Es decir la sesión no llega a la página principal, por eso siempre me lleva de nuevo al login.
Y no sé dónde está el error.

Etiquetas: html, sesión, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:04.