Foros del Web » Programando para Internet » PHP »

problema de validacion de usuarios

Estas en el tema de problema de validacion de usuarios en el foro de PHP en Foros del Web. hola. estoy haciendo una autentificacion de usuarios. en mi consulta sql pongo una condicion que si el usuario esta o no esta activo. 1 es ...
  #1 (permalink)  
Antiguo 22/04/2009, 16:49
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años, 7 meses
Puntos: 7
problema de validacion de usuarios

hola. estoy haciendo una autentificacion de usuarios. en mi consulta sql pongo una condicion que si el usuario esta o no esta activo. 1 es cuando esta y 0 cuando no lo esta. estuve poniendo unos fi k si el activo es igual a cero, k se loguee, pero si el usuario a escrito por error su usuario y contraseña, que me muestre un mensaje de error. pero cuando escribo un usuario y su contraseña y no estaba activo, me retorna a un mensaje de error que no existen.

este es mi codigo php:

Código PHP:

<?php
    
@session_start();
    include(
"includes/conexion.php");
    
    
$activo 1;
    
$sql_login "SELECT * FROM miusb_usuarios where username = '".$_POST['usuario']."'
                  and pass = '"
.$_POST['clave']."' and activo = '".$activo."'";
                  
    
$rpta_login mysql_query($sql_login) or die(mysql_error());
    
    if(
$activo==1){
        if(
mysql_num_rows($rpta_login)>0){        
            
$_SESSION['var_usuario'] = $_POST["usuario"];
            
$_SESSION['var_pass'] = $_POST["clave"];
            
header("Location:index.php");
        }else{
            
header("Location:index.php?error=1");
        }
    }elseif(
$activo==0){
        
header("Location:index.php?error=2");
    }
    
?>
cual es mi error que me tiene que mostrar el primer mensaje y no el segundo que me debe decir que el usuario a sido dado de baja.
  #2 (permalink)  
Antiguo 22/04/2009, 16:54
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: problema de validacion de usuarios

Pues, lo correcto seria:

Recuperar el valor activo de la base de datos, usando tu consulta.

SELECT activo FROM miusb_usuarios WHERE username = '$talCosa' AND password = '$otraCosa'

Recoges usando mysql_query y mysql_fetch_assoc, y luego haces la condicion:

Código php:
Ver original
  1. if($row['activo'] == 1) {
  2.   //Logueo exitoso
  3. } else {
  4.   //Debes activar tu cuenta
  5. }

De la manera qe lo estas haciendo, la consulta solo devuelve un resultado si el usuario esta activo, sino entonces la consulta devuelve como si no encontro registro alguno.
  #3 (permalink)  
Antiguo 22/04/2009, 17:03
 
Fecha de Ingreso: marzo-2009
Mensajes: 105
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: problema de validacion de usuarios

$sql_login = "SELECT * FROM miusb_usuarios where username = '".$_POST['usuario']."'
and pass = '".$_POST['clave']."' and activo = '".$activo."'";


[COLOR="Red"]No deberia ser[COLOR]

$sql_login = "SELECT * FROM misb_usuarios where username = '".$_POST['usuario']."'
and pass = '".$_POST['clave']."' and activo = '".$activo."'";
  #4 (permalink)  
Antiguo 24/04/2009, 08:51
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años, 7 meses
Puntos: 7
Respuesta: problema de validacion de usuarios

hola ronruby. gracias por responder mi mensaje aplique mi codigo y cuando escribo un usuario y contraseña correcto, me loguea, pero cuando escribo un usuario y contraseña incorrectos, me sale la pagina en blanco. que estoy haciendo mal.

este es mi codigo:

Código PHP:

<?php
    
@session_start();
    include(
"includes/conexion.php");
    
    
$activo 1;
    
$sql_login "SELECT * FROM miusb_usuarios where username = '".$_POST['usuario']."'
                  and pass = '"
.$_POST['clave']."' and activo = '".$activo."'";
                  
    
$rpta_login mysql_query($sql_login) or die(mysql_error());
    
$row mysql_fetch_assoc($rpta_login);
    
    if(
$row['activo']==1){
        if(
mysql_num_rows($rpta_login)>0){        
            
$_SESSION['var_usuario'] = $_POST["usuario"];
            
$_SESSION['var_pass'] = $_POST["clave"];
            
header("Location:index.php");
        }else{
            
header("Location:index.php?error=1");
        }
    }elseif(
$activo==0){
        
header("Location:index.php?error=2");
    }
    
?>
  #5 (permalink)  
Antiguo 24/04/2009, 08:54
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: problema de validacion de usuarios

Código php:
Ver original
  1. $activo = 1;
  2.     $sql_login = "SELECT * FROM miusb_usuarios where username = '".$_POST['usuario']."'
  3.                  and pass = '".$_POST['clave']."' and activo = '".$activo."'";
  4.                  
  5.     $rpta_login = mysql_query($sql_login) or die(mysql_error());
  6.     $row = mysql_fetch_assoc($rpta_login);
  7.    
  8.     if($row['activo']==1){

Sigues haciendo casi lo mismo. Tienes que eliminar la variable $activo, y hacer la consulta SIN ESTA.
  #6 (permalink)  
Antiguo 24/04/2009, 09:08
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años, 7 meses
Puntos: 7
Respuesta: problema de validacion de usuarios

hola de nuevoi. gracias por responder ronruby. corregi mi codigo de validacion, y quite la variable $activo. la validacio que puse funciona asi. si el usuario registrado ingresa su login y su contraseña, el logueo es correcto. si el usuario ingresa sus datos incorrectos, me tiene k mostrame un error que el usuario y su contraseña no son los correctos. pero si yo ingreso un usuario y una contrasela que ya fue registrada en la base de datos, me debe mostrarme un error que ee usuario a sido dado de baja. pero en mi codigo php yo pongo asi:

Código PHP:

<?php
    
@session_start();
    include(
"includes/conexion.php");
    
    
$sql_login "SELECT * FROM miusb_usuarios where username = '".$_POST['usuario']."'
                  and pass = '"
.$_POST['clave']."'";
                  
    
$rpta_login mysql_query($sql_login) or die(mysql_error());
    
$row mysql_fetch_assoc($rpta_login);
    
    if(
$row['activo']==1){
        if(
mysql_num_rows($rpta_login)>0){
            
$_SESSION['var_usuario'] = $_POST["usuario"];
            
$_SESSION['var_pass'] = $_POST["clave"];
            
header("Location:index.php");
        }else{
            
header("Location:index.php?error=1");
        }
    }else{
        
header("Location:index.php?error=2");
    }
    
?>
es decir no considera el primer header cuando ingreso el usuario y su clave incorectamente. solo considera el if else de la variable $row['activo']=="1".

cual es mi error que hace k solo considere el if else de la variable $row['activo']=="1" y no el if else del mysql_num_rows.

saludos.
  #7 (permalink)  
Antiguo 24/04/2009, 09:12
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: problema de validacion de usuarios

Primero tienes que averiguar si la consulta devolvio usuario alguno, por lo tanto:
Código php:
Ver original
  1. if(mysql_num_rows($rpta_login)>0){
Debe estar primero.

Luego, cuando entre a ese if(), entonces ya puedes usar el $row = ...
y luego comparas:
Código php:
Ver original
  1. if($row['activo']==1){
  #8 (permalink)  
Antiguo 24/04/2009, 09:15
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años, 7 meses
Puntos: 7
Respuesta: problema de validacion de usuarios

hola. no te entendi bien ronruby. me puedes explicar con mas detalles por favor.

saludos.
  #9 (permalink)  
Antiguo 24/04/2009, 09:18
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: problema de validacion de usuarios

Código php:
Ver original
  1. <?php
  2. //conexion y consulta ...
  3.  
  4. if(mysql_num_rows($rpta_login) > 0) {
  5.   //si existe el usuario, y ha puesto la informacion correctamente
  6.     $row = mysql_fetch_assoc($rpta_login);
  7.     if($row['activo'] == 1) {
  8.       //el usuario esta activo, creo variables de session
  9.     } else {
  10.       //el usuario existe, pero no esta activo
  11.     }
  12. } else {
  13.   //usuario o contraseña incorrectos
  14. }
  15. ?>
  #10 (permalink)  
Antiguo 24/04/2009, 09:27
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años, 7 meses
Puntos: 7
Respuesta: problema de validacion de usuarios

hola. gracias ronruby por responder. vi el codigo de solucion que pusiste. lo implemente y salio bien. gracias.
  #11 (permalink)  
Antiguo 24/04/2009, 09:43
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años, 7 meses
Puntos: 7
Respuesta: problema de validacion de usuarios

hola de nuevo. se me vino una duda. como pusiste el codigo:

Código PHP:

#
    
if($row['activo'] == 1) {
#
      //el usuario esta activo, creo variables de session
#
    
} else {
#
      //el usuario existe, pero no esta activo
#
    

que si el usuario esta activo y caso contrario no lo esta, me debe salir un mensaje de error. mi pregunta es si en el panel de control desactiva al usuario, como debo poner en el if para k me muestre un error que su cuenta a sido dado de baja.

disculpame por ser muy pregunton.

saludos.
  #12 (permalink)  
Antiguo 24/04/2009, 09:46
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: problema de validacion de usuarios

Hmmm ... Lo que yo hago es crear un campo EXTRA llamado blocked.
Y comparo ANTES de verificar si el usuario esta activo.

Es decir:

Código php:
Ver original
  1. <?php
  2. //conexion y consulta ...
  3.  
  4. if(mysql_num_rows($rpta_login) > 0) {
  5.   //si existe el usuario, y ha puesto la informacion correctamente
  6.     $row = mysql_fetch_assoc($rpta_login);
  7.     if($row['blocked'] == 1) {
  8.       //el usuario ha sido bloqueado
  9.     } else {
  10.       if($row['activo'] == 1) {
  11.         //el usuario esta activo, creo variables de session
  12.       } else {
  13.         //el usuario existe, pero no esta activo
  14.       }
  15.     }
  16. } else {
  17.   //usuario o contraseña incorrectos
  18. }
  19. ?>
  #13 (permalink)  
Antiguo 24/04/2009, 09:51
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años, 7 meses
Puntos: 7
Respuesta: problema de validacion de usuarios

hola ronruby. entonces en mi tabla que se llama usuarios, debo crear una campo extra que se llame blocked. o podria repetir el mismo if($row['blocked'] == 0) { pero la direfericia que le pondria cero.

asi estaria bien ronruby.

saludos y disculpe por estar preguntandole mucho.
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 12:13.