Foros del Web » Programando para Internet » PHP »

login y redireccionamiento

Estas en el tema de login y redireccionamiento en el foro de PHP en Foros del Web. Hola: Este código me funciona perfectamente, pero me gustaría ampliar ciertas cosas, ya que redirige sólo a una página si el logeo es correcto. Me ...
  #1 (permalink)  
Antiguo 29/04/2012, 09:44
 
Fecha de Ingreso: octubre-2011
Mensajes: 160
Antigüedad: 13 años
Puntos: 2
Pregunta login y redireccionamiento

Hola: Este código me funciona perfectamente, pero me gustaría ampliar ciertas cosas, ya que redirige sólo a una página si el logeo es correcto. Me gustaría que al logearse el usuario, dependiendo de la elección hecha en uno de los campos que había en el formulario (que rellenó antes de llevarlo a esta página de login) en este caso campo "especie", redireccione a una página u otra (si eligió "perro" a una página y si eligió "gato" a otra diferente), pero no sé como rescatar esos datos de la mysql y utilizarlos para redireccionar. ¿Alguien puede echarme una mano?. No sé si me he explicado muy bien...
Código PHP:
<?php

// Configura los datos de tu cuenta 
include("conexion.php"); $link Conectarse ();
 

@
session_start(); 

if (
$_POST['usuario']) { 
//Comprobacion del envio del nombre de usuario y password 
$usuario=$_POST['usuario']; 
$contrasenna=$_POST['contrasenna']; 
if (
$contrasenna==NULL) { 
echo 
"La password no fue enviada"
}else{ 
$query mysql_query("SELECT usuario,contrasenna FROM usuarios WHERE usuario = '$usuario'") or die(mysql_error()); 
$data mysql_fetch_array($query); 
if(
$data['contrasenna'] != $contrasenna) { 
echo 
"Login incorrecto"
}else{ 
$query mysql_query("SELECT usuario,contrasenna FROM usuarios WHERE usuario = '$usuario'") or die(mysql_error()); 
$row mysql_fetch_array($query); 
$_SESSION["USUARIO"] = $row['usuario']; 
echo 
"Has sido logueado correctamente ".$_SESSION['USUARIO']." y puedes acceder a tu cuenta."
echo 
"<head><meta http-equiv='refresh' content='2; url=/pagina-acceso-restringido.php'></head>";


}  
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    </head>
    <body>
        
        
        <FORM ACTION="login.php" enctype="multipart/form-data" METHOD="post">
              Usuario : <INPUT TYPE="text" NAME="usuario" SIZE=20 MAXLENGTH=20><br />
              Password: <INPUT TYPE="password" NAME="contrasenna" SIZE=10 MAXLENGTH=10><br />
              <INPUT TYPE="submit" VALUE="Ingresar">
            </FORM>
        
        
    </body>
</html>
  #2 (permalink)  
Antiguo 29/04/2012, 10:01
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 15 años, 3 meses
Puntos: 66
Respuesta: login y redireccionamiento

En tu código realizas dos veces la misma cosulta??

Si el campo especie está en la tabla usuarios puedes hacerlo así:

Código PHP:
if ($_POST['usuario']) { 
    
//Comprobacion del envio del nombre de usuario y password 
    
$usuario=$_POST['usuario']; 
    
$contrasenna=$_POST['contrasenna']; 
    if (
$contrasenna==NULL)
        echo 
"La password no fue enviada"
    else{ 
        
$query mysql_query("SELECT usuario, contrasenna, especie FROM usuarios WHERE usuario = '$usuario' && contrasenna='$contrasenna'") or die(mysql_error());
        
$num mysql_num_rows($query);
        if(
$num>0){
            
$data mysql_fetch_array($query);
            if(
$data['especie']=='perro')$pagina="perro.php";//suponiendo que el campo especie esté en la tabla usuario,
            
$_SESSION["USUARIO"] = $row['usuario']; 
            echo 
"Has sido logueado correctamente ".$_SESSION['USUARIO']." y puedes acceder a tu cuenta."
            echo 
"<head><meta http-equiv='refresh' content='2; url=/$pagina'></head>";
        } 
    } 

saludos,
__________________
Tu álbum de cromos online!!
  #3 (permalink)  
Antiguo 29/04/2012, 10:36
 
Fecha de Ingreso: octubre-2011
Mensajes: 160
Antigüedad: 13 años
Puntos: 2
Respuesta: login y redireccionamiento

El campo "especie" se encuentra en la tabla "animal", no sé si debería acceder a la información con un SELECT, de todas formas, en el código que me has dejado, sólo redirecciona a un sitio, si ha elegido "perro", ¿cómo hago para reflejar que redireccione a la otra página si ha elegido la otra opción?
  #4 (permalink)  
Antiguo 29/04/2012, 11:00
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 15 años, 3 meses
Puntos: 66
Respuesta: login y redireccionamiento

Cita:
Iniciado por cheterporras2 Ver Mensaje
El campo "especie" se encuentra en la tabla "animal", no sé si debería acceder a la información con un SELECT, de todas formas, en el código que me has dejado, sólo redirecciona a un sitio, si ha elegido "perro", ¿cómo hago para reflejar que redireccione a la otra página si ha elegido la otra opción?
tienes la tabla animal relacionada con usuarios?? que campo las relaciona??
__________________
Tu álbum de cromos online!!
  #5 (permalink)  
Antiguo 29/04/2012, 11:43
Avatar de alopezblue  
Fecha de Ingreso: abril-2012
Ubicación: Nicaragua
Mensajes: 21
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: login y redireccionamiento

Simple, si dices que el campo "especie" se encuentra en la tabla "animal", puedes hacer un CASE por cada opción disponible en dicho campo. Dentro de cada CASE, haces la redirección a la página según el tipo de especie seleccionado.
  #6 (permalink)  
Antiguo 29/04/2012, 11:50
 
Fecha de Ingreso: octubre-2011
Mensajes: 160
Antigüedad: 13 años
Puntos: 2
Respuesta: login y redireccionamiento

Los relaciona la id Santris. Por otra parte, alopezblue, ¿podrías darme alguna referencia o ejemplo práctico a lo que me estás diciendo?
  #7 (permalink)  
Antiguo 29/04/2012, 12:05
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 15 años, 3 meses
Puntos: 66
Respuesta: login y redireccionamiento

Como dices se relacionan por el campo id, lo cual quiere decir que al registro del usuario id=25 le corresponde el registro con id = 25 de la tabla animales.
Para una redireccion más dinámica puedes poner nombres a los archivos con el nombre de las especies ej: perros.php

Código PHP:
if ($_POST['usuario']) { 
    
//Comprobacion del envio del nombre de usuario y password 
    
$usuario=$_POST['usuario']; 
    
$contrasenna=$_POST['contrasenna']; 
    if (
$contrasenna==NULL)
        echo 
"La password no fue enviada"
    else{ 
        
$query mysql_query("SELECT usuario.usuario, usuario.contrasenna, animal.especie FROM usuarios INNER JOIN animales on usuarios.id = animales.id WHERE usuario = '$usuario' && contrasenna='$contrasenna'") or die(mysql_error());
        
$num mysql_num_rows($query);
        if(
$num>0){
            
$data mysql_fetch_array($query);
            
$pagina $data['especie'].".php";
            
$_SESSION["USUARIO"] = $data['usuario']; 
            echo 
"Has sido logueado correctamente ".$_SESSION['USUARIO']." y puedes acceder a tu cuenta."
            echo 
"<head><meta http-equiv='refresh' content='2; url=/$pagina'></head>";
        } 
    } 

__________________
Tu álbum de cromos online!!
  #8 (permalink)  
Antiguo 29/04/2012, 13:22
 
Fecha de Ingreso: octubre-2011
Mensajes: 160
Antigüedad: 13 años
Puntos: 2
Respuesta: login y redireccionamiento

¡¡¡Muchas gracias!!! Había algunos pequeños fallillos en el SELECT, pero los he corregido. Finalmente se quedaría así, y funciona:
Código PHP:
<?php

// Configura los datos de tu cuenta 
include("conexion.php"); $link Conectarse ();
 

@
session_start(); 

if (
$_POST['usuario']) { 
//Comprobacion del envio del nombre de usuario y password 
$usuario=$_POST['usuario']; 
$contrasenna=$_POST['contrasenna']; 
if (
$contrasenna==NULL) { 
echo 
"La password no fue enviada"
}else{ 
$query mysql_query("SELECT usuarios.usuario, usuarios.contrasenna, animal.especie FROM usuarios INNER JOIN animal on usuarios.idusuario = animal.idusuario WHERE usuarios.usuario = '$usuario' && usuarios.contrasenna='$contrasenna'") or die(mysql_error());
         
$num mysql_num_rows($query); 
        if(
$num>0){ 
            
$data mysql_fetch_array($query); 
            
$pagina $data['especie'].".php"
$_SESSION["USUARIO"] = $row['usuario']; 
echo 
"Has sido logueado correctamente ".$_SESSION['USUARIO']." y puedes acceder a tu cuenta."
echo 
"<head><meta http-equiv='refresh' content='2; url=/$pagina'></head>";




?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    </head>
    <body>
        
        
        <FORM ACTION="login.php" enctype="multipart/form-data" METHOD="post">
              Usuario : <INPUT TYPE="text" NAME="usuario" SIZE=20 MAXLENGTH=20><br />
              Password: <INPUT TYPE="password" NAME="contrasenna" SIZE=10 MAXLENGTH=10><br />
              <INPUT TYPE="submit" VALUE="Ingresar">
            </FORM>
        
        
    </body>
</html>
  #9 (permalink)  
Antiguo 29/04/2012, 14:51
 
Fecha de Ingreso: octubre-2011
Mensajes: 160
Antigüedad: 13 años
Puntos: 2
Respuesta: login y redireccionamiento

Sólo un pequeño apunte del que no me había dado cuenta antes. En esta parte del código he notado algo que no sé si es un fallo o no.
Cita:
$_SESSION["USUARIO"] = $row['usuario'];
echo "Has sido logueado correctamente ".$_SESSION['USUARIO']." y puedes acceder a tu cuenta.";
En teoría, cuando el usuario se logea, debería salir su nombre de usuario, es decir, por ejemplo
Cita:
"Has sido logueado correctamente ESTRELLA y puedes acceder a tu cuenta.";
, así, por lo menos, es como lo entiendo. Sin embargo, lo que me sale es esto
Cita:
"Has sido logueado correctamente y puedes acceder a tu cuenta.";
No sale el nombre del usuario, por lo que, me imagino, hay un error por alguna parte, ¿no?.
  #10 (permalink)  
Antiguo 29/04/2012, 16:54
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 15 años, 3 meses
Puntos: 66
Respuesta: login y redireccionamiento

esta linea:
Código PHP:
$_SESSION["USUARIO"] = $row['usuario']; 
cambialá por esta:

Código PHP:
$_SESSION["USUARIO"] = $data['usuario']; 
el array es $data no $row,

saludos,
__________________
Tu álbum de cromos online!!
  #11 (permalink)  
Antiguo 30/04/2012, 02:56
 
Fecha de Ingreso: octubre-2011
Mensajes: 160
Antigüedad: 13 años
Puntos: 2
Respuesta: login y redireccionamiento

¡¡¡Perfecto!!! Gracias, tienes toda la razón. Doy por cerrado el tema.

Etiquetas: login.php, redirección, usuario+contraseña
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:35.