Foros del Web » Programando para Internet » PHP »

Login de usuario

Estas en el tema de Login de usuario en el foro de PHP en Foros del Web. Hola gente. Tengo un pequeño problema que no entiendo. Me dijeron que haga de tarea del curso que estoy haciendo de programacion PHP, una pagina ...
  #1 (permalink)  
Antiguo 15/05/2012, 10:44
 
Fecha de Ingreso: abril-2012
Mensajes: 36
Antigüedad: 12 años
Puntos: 1
Login de usuario

Hola gente. Tengo un pequeño problema que no entiendo.

Me dijeron que haga de tarea del curso que estoy haciendo de programacion PHP, una pagina para registrar usuarios, y una para loguearse.

Ahora, a la hora de loguearse va todo bien, pero tengo que poner que entre si el usuario esta defiinido como activo, cosa que no hace y me devuelve a la pagina de login.

Este es el codigo de registro de usuario nuevo.

Código PHP:
Ver original
  1. <?php
  2. $error=array();
  3. //validacion
  4. if(strlen($_POST['user'])<6){
  5.     $error['user']="si";
  6. }else{
  7.     $usuario=strtoupper($_POST['user']);
  8. }
  9. if(strlen($_POST['pass'])<6){
  10.     $error['pass']="corta";
  11. }else{
  12.     if($_POST['pass']==$_POST['confirm']){
  13.         $contraseña=$_POST['pass'];
  14.     }else{
  15.         $error['pass']="distinta";
  16.     }
  17. }
  18. //cierre validacion
  19.  
  20. if(count($error)>0){
  21.     if($error['user']=="si"){
  22.         echo "El nombre de usuario tiene que tener al menos 6 caracteres</br>";
  23.     }
  24.     if($error['pass']=="corta"){
  25.         echo "La contraseña debe tener al menos 6 caracteres</br>";
  26.     }
  27.     if($error['pass']=="distinta"){
  28.         echo "Las contraseñas deben ser iguales</br>";
  29.     }
  30.     echo "Completa los datos correctamente para registrarte";
  31. }else{
  32.     if(file_exists("base.txt")){
  33.     $base=unserialize(file_get_contents("base.txt"));
  34. }else{
  35.     $base=array();
  36. }
  37. $registro=array();
  38. $usuario=$_POST['user'];
  39. $contraseña=$_POST['pass'];
  40. $registro['user']=$usuario;
  41. $registro['pass']=$contraseña;
  42. $registro['activo']="si";
  43. $base[]=$registro;
  44.  
  45. file_put_contents("base.txt",serialize($base));
  46. echo "¡Usuario registrado con exito!";
  47. }
  48.  
  49. ?>

Y este es el codigo de login

Código PHP:
Ver original
  1. <?php
  2. $usuario=strtoupper($_POST['loguser']);
  3. $contraseña=$_POST['logpass'];
  4.  
  5. if(file_exists("base.txt")){
  6.     $base=unserialize(file_get_contents("base.txt"));
  7. }else{
  8.     $base=array();
  9. }
  10.  
  11. foreach($base as $registro){
  12.     if($registro['user']==$usuario and $registro['pass']==$contraseña){
  13.         if($registro['activo']=="si"){
  14.         header("location:mensajes.php");
  15.         exit();
  16.         }else{
  17.             echo "La cuenta se encuentra deshabilitada por inactividad";
  18.             exit();
  19.         }
  20.     }else{
  21.             header("location:index.php");  
  22.             }
  23.         }
  24. ?>

Quitando la parte de usuario activo me puedo loguear perfectamente, pero cuando agrego

if($registro['activo']=="si"){

Me devuelve siempre a login.php
  #2 (permalink)  
Antiguo 15/05/2012, 12:48
 
Fecha de Ingreso: abril-2012
Mensajes: 36
Antigüedad: 12 años
Puntos: 1
Respuesta: Login de usuario

Nada, ya encontre el error, lo comparto por si a alguien le interesa

Código PHP:
Ver original
  1. <?php
  2. $usuario=strtoupper($_POST['loguser']);
  3. $contraseña=$_POST['logpass'];

En esa parte yo ponia lo que tenia en ID de los campos del formulario de logueo, en vez de poner el NAME de cada uno.

Quedaria asi:

Código PHP:
Ver original
  1. <?php
  2. $usuario=strtoupper($_POST['user']);
  3. $contraseña=$_POST['pass'];

Sepan disculpar.

Ahora funciona perfecto.

Etiquetas: login, registro, 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 21:03.