Foros del Web » Programando para Internet » PHP »

Problema con sesiones

Estas en el tema de Problema con sesiones en el foro de PHP en Foros del Web. Hola, tengo el siguiente codigo de un sistema de usuarios 1. fichero de login: Código: <table> <tr> <form method="post" enctype="multipart/form-data" action='comproba.php'> <td>Login:</td> <td><input name="usuari" value="login... ...
  #1 (permalink)  
Antiguo 22/09/2010, 11:13
 
Fecha de Ingreso: febrero-2009
Mensajes: 36
Antigüedad: 15 años, 3 meses
Puntos: 0
Problema con sesiones

Hola, tengo el siguiente codigo de un sistema de usuarios

1. fichero de login:
Código:
<table>
        <tr>
        <form method="post" enctype="multipart/form-data" action='comproba.php'>
        <td>Login:</td> <td><input name="usuari" value="login... " type="text" size="30" /></td>
        <td>Password:</td> <td><input name="password" value="El password" type="password" size="30" /></td>
        <td><input type="submit" value="Entrar" name="enviar" /></td>
        </form>
        </tr>
    </table>
2. fichero de comprobacion de datos (comproba.php)
Código:
<?php
	ob_start();
	session_start();
	include 'php/conexio.php';
	$login =$_POST['usuari'];
	$pass =$_POST['password'];
	mysql_real_escape_string($login);
    mysql_real_escape_string($pass);
	$query = "SELECT * 
	FROM usuari 
	WHERE nom='".$login."' and passwd = '".$pass."'";
    $result=mysql_query($query) or die ((mysql_error()));
	if(mysql_num_rows($result)>0)
	{ 
		$_SESSION['login']=$login;
		session_unset($_SESSION['error_login']);
		header("Location:index.php");
		ob_end_flush();
		
	}
	else
	{
		//session_unset();
		//session_destroy();
		$_SESSION['error_login']="logeo incorrecto";
		header("Location:login.php");
    }
      mysql_close($conexio);
      ob_end_flush();
?>
y finalmente, el código apra comprobar si te has logeado a cada página
Código:
<?php
	ob_start();
	session_start();
	if(!isset($_SESSION['login']))
	{
		$_SESSION['error_login']="Error al logueig - index.php ".session_name();
		header("Location:login.php");
		ob_end_flush();
	}
	else
	{	
?>
El problema es que en la parte donde comprueba si estas logeado redirige al login como si no hubira pasado la comprobación, cosa que si hace, es decir, dice que la variable $_SESSION['login'] no esta inicializada
  #2 (permalink)  
Antiguo 22/09/2010, 12:46
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Problema con sesiones

primero, tenemos unos errores lógicos aquí:

la función mysql_real_escape_string no recibe un parámetro por referencia, por lo que no modifica la variable, de hecho, devuelve la cadena filtrada, es decir, debes usarlo así:

Código PHP:
Ver original
  1. $login = mysql_real_escape_string($login);
  2. $pass = mysql_real_escape_string($pass);

además, la condición que usas para saber si el usuario existe es si el resultado de la consulta arroja al menos un registro, y como supongo que almacenas las contraseñas hasheadas, debes de volvwr a aplicar el hash para que funcione:

Código PHP:
Ver original
  1. $pass = md5(mysql_real_escape_string($pass));
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 22/09/2010, 14:25
 
Fecha de Ingreso: febrero-2009
Mensajes: 36
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Problema con sesiones

He hecho las correcciones pero sigue fallando, sin reconocer la variable de sesión que debería estar creada
  #4 (permalink)  
Antiguo 23/09/2010, 18:17
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Problema con sesiones

tu navegador tiene las cookies activas?
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

Etiquetas: sesiones
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 09:45.