Foros del Web » Programando para Internet » PHP »

Problema con mi Login/Session entra en bucle

Estas en el tema de Problema con mi Login/Session entra en bucle en el foro de PHP en Foros del Web. Hola, tengo un login que me valida los datos de el usuario que desea ingresar y si estan correctos puede pasar seteo el session en ...
  #1 (permalink)  
Antiguo 03/11/2009, 09:34
Avatar de Capote  
Fecha de Ingreso: julio-2007
Ubicación: C h i l e
Mensajes: 136
Antigüedad: 17 años, 4 meses
Puntos: 0
Problema con mi Login/Session entra en bucle

Hola, tengo un login que me valida los datos de el usuario que desea ingresar y si estan correctos puede pasar seteo el session en $_SESSION['usuario_autorizado'] = '1' y luego pregunto por el en todas las paginas si es correcto es un usuario valido de lo contrario no.
El problema se sucita que de manera local puedo logearme sin problemas pero si lo subo ah internet me sale esto:
Firefox ha detectado que el servidor está redirigiendo la solicitud a esta dirección de una manera en la que nunca terminará.
He estado viendo el codigo del login y no comprendo en que parte se puede estar metiendo en un ciclo.

Dejo el código:

Este es mi login.php
Código PHP:
<?php
    
//Carga de variables del Servidor de Base de Datos.
    
include "base_de_datos.php";
    
//Conexion a la Base de Datos.
    
$conexion mysql_connect($host,$usuario,$password) or die ('Error de conexion, el error es : '.mysql_error());
    
//Seleccion de la Base de Datos.
    
mysql_select_db($bd,$conexion) or die ('Error de selecion de Base de Datos, el error es : '.mysql_error());
    
//Confeccion de la consulta SQL.
    
$consulta 'select contrasena_usuario,nombre_usuario,id_estado_usuario from usuario where usuario = "'.mysql_real_escape_string($_POST['usuario']).'"';
    
//Ejecucion de la consulta SQL.
    
$resultado mysql_query($consulta,$conexion) or die ('Error en la consulta SQL, el error es : '.mysql_error());
    
//Comprobación de la existancia de algún resultado.
    
if (mysql_num_rows($resultado))
    {
        
//Se recupera el registro en un array.
        
for ($i 0;$i <= mysql_num_rows($resultado)-1$i++)
        {
            if (!
mysql_data_seek($resultado$i))
            {
                echo 
"No se puede mostrar la fila ".$i.", el error es: ".mysql_error();
                continue;
            }
            if (!(
$registro mysql_fetch_row($resultado)))
            {
                continue;
            }
        }
        
//Chequeo de la validez del usuario.
        
if ($registro[3] == 1)
        {
            
//Chequeo de la validez del password.
            
if (sha1(mysql_real_escape_string($_POST['contrasena'])) == $registro[0])
            {
                
//Se inicia la sesion
                
session_start();
                
//Se almacenan los datos de sesion
                
$_SESSION['usuario_autorizado'] = '1';
                
$_SESSION['nombre_usuario'] = $registro[1];
                
//Envia a la pagina de Bienvenida
                
header("Location: /sistema/inicio.php");
                
//Cierra el programa.
                
exit();
            }
            else
            {
                
//Se inicia la sesion
                
session_start();
                
//Contraseña Incorrecta
                
if(isset($_SESSION['intentos']))
                {
                    
$_SESSION['intentos'] += 1;
                    if(
$_SESSION['intentos'] >= )
                    {
                        
//Confeccion de la consulta SQL.
                        
$consulta 'UPDATE usuario SET id_estado_usuario = 2 WHERE usuario = "'.mysql_real_escape_string($_POST['usuario']).'"';
                        
//Ejecucion de la consulta SQL.
                        
mysql_query($consulta,$conexion) or die ('Error en la consulta SQL, el error es : '.mysql_error());
                        unset(
$_SESSION['intentos']);
                    }
                }
                else
                {
                    
$_SESSION['intentos'] = 1;
                }
                
//Devuelve al Login.
                
header("Location: /sistema");
                
//Cierra el programa.
                
exit();
            }
        }
        else
        {
            
//Usuario Bloqueado.
            //Devuelve al Login.
            
header("Location: /sistema");
            
//Cierra el programa.
            
exit();
        }
    }
    else
    {
        
//No existe el usuario.
        //Devuelve al Login.
        
header("Location: /sistema");
        
//Cierra el programa.
        
exit();
    }
?>
Y las demás paginas:

Código PHP:

<?php
    
//Inicio de sesion.
    
session_start();
        
//Se revisa su validez.
        
if(isset($_SESSION['usuario_autorizado']))
            if(
$_SESSION['usuario_autorizado'] != '1')
                {
                    
//Usuario no autorizado.
                    //Devuelve al Login.
                    
header("Location: /sistema");
                    exit();
                }
                else 
                 
// Navegar 
                
{
                
                    
//ingreso valido
                
{
?>

Gracias!!
__________________
"La blanda respuesta quita la ira, Mas la palabra áspera hace subir el furor"
  #2 (permalink)  
Antiguo 03/11/2009, 09:42
 
Fecha de Ingreso: octubre-2008
Mensajes: 118
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Problema con mi Login/Session entra en bucle

a mi me pasaba q me daba un error con el session_start(); y lo solucione poniendo session_start(); al principio de cada pagina

Saludos.
  #3 (permalink)  
Antiguo 03/11/2009, 09:53
Avatar de Capote  
Fecha de Ingreso: julio-2007
Ubicación: C h i l e
Mensajes: 136
Antigüedad: 17 años, 4 meses
Puntos: 0
Cita:
Iniciado por nosek159 Ver Mensaje
a mi me pasaba q me daba un error con el session_start(); y lo solucione poniendo session_start(); al principio de cada pagina

Saludos.
Pero si mi session_start(); esta en el principio de mis paginas

Subí, los archivos a otro servidor para probar y no presento problemas el login. Pero en el servidor que corresponde me alega el navegador que se mete en un "bucle".

¿Sera realmente un problema de mi código o el del servidor?



Gracias
__________________
"La blanda respuesta quita la ira, Mas la palabra áspera hace subir el furor"

Última edición por GatorV; 03/11/2009 a las 15:02
  #4 (permalink)  
Antiguo 03/11/2009, 14:18
Avatar de jlmoreno31  
Fecha de Ingreso: mayo-2009
Ubicación: Barcelona
Mensajes: 174
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Problema con mi Login/Session entra en bucle

No tengo ni idea capote, pero te recomiendo que el @session_start();
debe estar al principio de la pagina, justo en la primera fija, no puede haber nada antes que el session_start(); si no tendrás problemas. A mí me paso algo parecido y éste fue el consejo que me dieron. Lo solucioné poniéndolo en la primera fila de cualquier página.

Saludos
  #5 (permalink)  
Antiguo 03/11/2009, 20:25
Avatar de Capote  
Fecha de Ingreso: julio-2007
Ubicación: C h i l e
Mensajes: 136
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: Problema con mi Login/Session entra en bucle

Si, es primero que tengo en la pagina, antes no tengo nada ya sea codigo html o php.

muy raro
__________________
"La blanda respuesta quita la ira, Mas la palabra áspera hace subir el furor"
  #6 (permalink)  
Antiguo 03/11/2009, 20:37
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: Problema con mi Login/Session entra en bucle

Hola,

El problema no es un ciclo en el código, el problema es que la página A redirecciona a la página B (con header/location), y la página B responde redireccionando a la página A.

Normalmente esto sucede cuando la página A valida como autorizado algo (y ya no pide usuario y contraseña, solamente redirecciona) y la página B no lo valida como autorizado (entonces pasa a la página A para validarlo), este ciclo se repite indefinidamente, y por suerte actualmente los navegadores lo detectan de manera adecuada.

Con el código que pusiste no es posible saber donde se produce el error.

Saludos,
  #7 (permalink)  
Antiguo 03/11/2009, 20:52
Avatar de Capote  
Fecha de Ingreso: julio-2007
Ubicación: C h i l e
Mensajes: 136
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: Problema con mi Login/Session entra en bucle

Por lo que dices y puedo entender, una vez que valido el usuario en mi pagina login y es correcto lo ingresado, lo mando a mi pagina de inicio y en esa pagina de inicio el session esta por decirlo de alguna manera queriendo validar ese session y trata de ir al login.

Pd.El codigo esta completo, con eso estoy manejando las sesiones de los usuarios


Gracias
__________________
"La blanda respuesta quita la ira, Mas la palabra áspera hace subir el furor"
  #8 (permalink)  
Antiguo 03/11/2009, 20:58
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: Problema con mi Login/Session entra en bucle

Hola,

Posiblemente, lo que observe es que en la página de Login hay un redirect a /sistema; dependiendo de la página que tengas configurada como index posiblemente se redireccione a si misma.

Realmente no puedo estar seguro de la forma en que existe el redirect, pero ese comportamiento de firefox siempre está relacionado con una redirección a una misma página que se redirecciona a si misma, o la misma operación entre dos páginas diferentes que se redireccionan entre ellas.

Sucede frecuentemente en servidores grandes donde ponen el login en un dominio seguro y el sitio general en otro dominio, y allí se generan ese tipo de problemas. Tendrías que revisar bien todos los valores de la sesión (var dump) y comentar los redirects (//) para ver el resultado.

Saludos,
  #9 (permalink)  
Antiguo 03/11/2009, 21:25
Avatar de Capote  
Fecha de Ingreso: julio-2007
Ubicación: C h i l e
Mensajes: 136
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: Problema con mi Login/Session entra en bucle

Ok
Revisare nuevmente los redireccionamiento, ojalá pueda resolverlo

Gracias, HackmanC
__________________
"La blanda respuesta quita la ira, Mas la palabra áspera hace subir el furor"
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 17:30.