Foros del Web » Programando para Internet » PHP »

Redirección después de iniciar sesión

Estas en el tema de Redirección después de iniciar sesión en el foro de PHP en Foros del Web. Hola, tengo un pequeño problema lo que pasa es que inicio sesión desde el formulario de login y este es el código que comprueba si ...
  #1 (permalink)  
Antiguo 08/07/2013, 11:50
Avatar de Mosiah16  
Fecha de Ingreso: abril-2010
Ubicación: Antofagasta
Mensajes: 70
Antigüedad: 14 años
Puntos: 1
Redirección después de iniciar sesión

Hola, tengo un pequeño problema lo que pasa es que inicio sesión desde el formulario de login y este es el código que comprueba si inicie sesión y demás:

Código PHP:
     <?php 
   
if(isset($_POST['enviar'])) { // comprobamos que se hayan enviado los datos del formulario 
        // comprobamos que los campos usuarios_nombre y usuario_clave no estén vacíos 
        
if(empty($_POST['usuario_email']) || empty($_POST['usuario_clave'])) { 
            echo 
"El email o la contraseña no han sido ingresados. <a href='javascript:history.back();'>Reintentar</a>"
        }else { 
            
// "limpiamos" los campos del formulario de posibles códigos maliciosos 
            
$usuario_email mysql_real_escape_string($_POST['usuario_email']); 
            
$usuario_clave mysql_real_escape_string($_POST['usuario_clave']); 
            
$usuario_clave md5($usuario_clave); 
            
// comprobamos que los datos ingresados en el formulario coincidan con los de la BD 
            
$sql mysql_query("SELECT usuario_id, usuario_email, usuario_clave, nivel FROM usuarios WHERE usuario_email='".$usuario_email."' AND usuario_clave='".$usuario_clave."'"); 
            if(
$row mysql_fetch_array($sql)) { 
                
$_SESSION['usuario_id'] = $row['usuario_id']; // creamos la sesion "usuario_id" y le asignamos como valor el campo usuario_id 
                
$_SESSION['usuario_email'] = $row["usuario_email"]; // creamos la sesion "usuario_nombre" y le asignamos como valor el campo usuario_nombre 
                
$_SESSION['niv']= $row['nivel']; //Creamos la sesion nivel para los diferentes tipos de usuarios en el sitio.
                
header("Location: index.php"); 
            }else { 
?> 
                     <a class='errorbox hide'><strong>Los datos ingresados son incorrectos.</strong></a><a class='black button' href='javascript:history.back();'>Reintentar</a><br>
                     <br>
<?php 
            

        } 
    }else { 
      
header("Location: index.php"); 

    } 
?>
Pero resulta que al iniciar sesión, no me redirecciona a index.php o a cualquier otra URL, es como que si no estuviera comprobando, entonces que está dando problemas?

Muchas gracias y espero una respuesta de ayuda por favor.

Saludos
__________________
Tu mente es capaz de todo...
  #2 (permalink)  
Antiguo 08/07/2013, 12:07
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Redirección después de iniciar sesión

No veo la llamada a session_start(), esto te debe generar un Warning y por consiguiente header() no funciona. Habilita los errores a ver si hay algún output.
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 08/07/2013, 12:19
Avatar de Mosiah16  
Fecha de Ingreso: abril-2010
Ubicación: Antofagasta
Mensajes: 70
Antigüedad: 14 años
Puntos: 1
Respuesta: Redirección después de iniciar sesión

Código PHP:
Ver original
  1. <?php
  2.     session_start();
  3.     include('db.php');
  4.     if(isset($_POST['enviar'])) { // comprobamos que se hayan enviado los datos del formulario
  5.         // comprobamos que los campos usuarios_nombre y usuario_clave no estén vacíos
  6.         if(empty($_POST['usuario_email']) || empty($_POST['usuario_clave'])) {
  7.             echo "El usuario o la contraseña no han sido ingresados. <a href='javascript:history.back();'>Reintentar</a>";
  8.         }else {
  9.             // "limpiamos" los campos del formulario de posibles códigos maliciosos
  10.             $usuario_email = mysql_real_escape_string($_POST['usuario_email']);
  11.             $usuario_clave = mysql_real_escape_string($_POST['usuario_clave']);
  12.             $usuario_clave = md5($usuario_clave);
  13.             // comprobamos que los datos ingresados en el formulario coincidan con los de la BD
  14.             $sql = mysql_query("SELECT usuario_id, usuario_email, usuario_clave FROM usuarios WHERE usuario_email='".$usuario_email."' AND usuario_clave='".$usuario_clave."'");
  15.             if($row = mysql_fetch_array($sql)) {
  16.                 $_SESSION['usuario_id'] = $row['usuario_id']; //
  17.                 $_SESSION['usuario_email'] = $row["usuario_email"]; //
  18.                 header("Location: acceso.php");
  19.             }else {
  20. ?>
  21.                 Error, <a href="acceso.php">Reintentar</a>
  22. <?php
  23.             }
  24.         }
  25.    }else {
  26.         header("Location: index.php");
  27.     }
  28. ?>

pero no redirecciona con header y con otro metodo tampoco :S
__________________
Tu mente es capaz de todo...

Última edición por Mosiah16; 08/07/2013 a las 12:26
  #4 (permalink)  
Antiguo 08/07/2013, 12:27
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Redirección después de iniciar sesión

algo debera aparecer en la pantalla aunque no redireccione o tampoco? intenta especificar mas sobre lo que sucede y no estaria mal depurar el codigo.

seguramente sea un error de la consulta por eso no llega a redireccionar ya que no entra en el if

prueba depurando la consulta

Código PHP:
Ver original
  1. $sql = mysql_query("SELECT usuario_id, usuario_email, usuario_clave FROM usuarios WHERE usuario_email='".$usuario_email."' AND usuario_clave='".$usuario_clave."'") or die (mysql_error());

Etiquetas: formulario, mysql, select, sesión, sql, usuarios
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 06:49.