Foros del Web » Programando para Internet » PHP »

PHP OO error en sentencia de login

Estas en el tema de error en sentencia de login en el foro de PHP en Foros del Web. Hola a todos, tengo este codigo en mi login, pero no reconoce a mi usuario y contraseña, lo toma como si no estuviera en la ...
  #1 (permalink)  
Antiguo 22/07/2015, 11:05
 
Fecha de Ingreso: junio-2015
Ubicación: Lima
Mensajes: 41
Antigüedad: 9 años, 5 meses
Puntos: 0
error en sentencia de login

Hola a todos, tengo este codigo en mi login, pero no reconoce a mi usuario y contraseña, lo toma como si no estuviera en la BD, y me dice lo que esta en el mensaje de la condición: "usuario y contraseña incorrecto"

no se en que esta fallando, lo he revisado y no encuentro el error, espero que puedan ayudarme.

Código PHP:
Ver original
  1. <?php
  2.        
  3.         if(!empty($_POST['usuario']) and !empty($_POST['password'])){
  4.             $usuario=limpiar($_POST['usuario']);
  5.             $contra=limpiar($_POST['password']);
  6.            
  7.             $pa=mysql_query("SELECT * FROM docente WHERE usuario='$usuario' and password='$password'");            
  8.             if($row=mysql_fetch_array($pa)){
  9.                 if($row['estado']=='s'){
  10.                     $nombre=$row['nombre_docente'];
  11.                     $nombre=explode(" ", $nombre);
  12.                     $nombre=$nombre[0];
  13.                     $_SESSION['user_name']=$nombre;
  14.                     $_SESSION['tipo_user']=$row['tipo'];
  15.                     $_SESSION['cod_user']=$row['usuario'];
  16.                     echo mensajes('Bienvenido<br>'.$row['nombre_docente'].' '.$row['apePa_docente'].''.$row['apeMa_docente'].' ','verde').'<br>';
  17.                     echo '<center><img src="img/ajax-loader.gif"></center><br>';
  18.                     echo '<meta http-equiv="refresh" content="2;url=pagina-acceso-restringido.php">';
  19.                 }else{
  20.                     echo mensajes('Usted no se encuentra Activo en la base de datos<br>Consulte con su Administrador de Sistema','rojo');    
  21.         }
  22.             }else{
  23.                     echo mensajes('Usuario y Contraseña Incorrecto<br>','rojo');
  24.                     echo '<center><a href="login.php" class="btn"><strong>Intentar de Nuevo</strong></a></center>';
  25.             }
  26.         }else{
  27.             echo '  <input type="text" name="usuario" class="input-block-level" placeholder="Documento" autocomplete="off" required>
  28.                     <input type="password" name="password" class="input-block-level" placeholder="Password" autocomplete="off" required>
  29.                     <div align="right"><button class="btn btn-large btn-primary" type="submit"><strong>Entrar</strong></button></div>';    
  30.        
  31.        
  32.            
  33.         }
  34.       ?>
  #2 (permalink)  
Antiguo 22/07/2015, 11:17
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: error en sentencia de login

OK... ¿Y qué se supone que contiene limpiar()? ¿Cómo sabes que no está introduciendo errores en los strings?
¿Has verificado el charset de la conexión? ¿Es UTF-8 o LATIN1?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 22/07/2015, 11:24
Avatar de Panicav  
Fecha de Ingreso: diciembre-2007
Ubicación: Rosario, Santa Fe - Argentina.
Mensajes: 135
Antigüedad: 17 años
Puntos: 8
Respuesta: error en sentencia de login

Suponiendo que el formuario html envía los datos de forma correcta, seria interesante ver que hace la función "limpiar" dado que sale de la verificación en el primer paso, como si los datos no fueran correctos igual yo modificaría un poco el codigo.

Código PHP:
 if(!empty($_POST['usuario']) and !empty($_POST['password'])){ 
            
$usuario=limpiar($_POST['usuario']);
            
$contra=limpiar($_POST['password']);
            
            
$pa=mysql_query("SELECT * FROM docente WHERE usuario='$usuario'");             
            
$row=mysql_fetch_array($pa));
            
            
$hash password_hash($row['contrasena'], PASSWORD_DEFAULT);
                if(
$row['usuario'] != '' && password_verify($contra$hash))) {
                if(
$row['estado']=='s'){
                    
$nombre=$row['nombre_docente'];
                    
$nombre=explode(" "$nombre);
                    
$nombre=$nombre[0];
                    
$_SESSION['user_name']=$nombre;
                    
$_SESSION['tipo_user']=$row['tipo'];
                    
$_SESSION['cod_user']=$row['usuario'];
                    echo 
mensajes('Bienvenido<br>'.$row['nombre_docente'].' '.$row['apePa_docente'].''.$row['apeMa_docente'].' ','verde').'<br>';
                    echo 
'<center><img src="img/ajax-loader.gif"></center><br>';
                    echo 
'<meta http-equiv="refresh" content="2;url=pagina-acceso-restringido.php">';
                }else{
                    echo 
mensajes('Usted no se encuentra Activo en la base de datos<br>Consulte con su Administrador de Sistema','rojo');    
        }
            }else{
                    echo 
mensajes('Usuario y Contraseña Incorrecto<br>','rojo');
                    echo 
'<center><a href="login.php" class="btn"><strong>Intentar de Nuevo</strong></a></center>';
            }
        }else{
            echo 
'  <input type="text" name="usuario" class="input-block-level" placeholder="Documento" autocomplete="off" required>
                    <input type="password" name="password" class="input-block-level" placeholder="Password" autocomplete="off" required>
                    <div align="right"><button class="btn btn-large btn-primary" type="submit"><strong>Entrar</strong></button></div>'

  #4 (permalink)  
Antiguo 22/07/2015, 11:51
 
Fecha de Ingreso: junio-2015
Ubicación: Lima
Mensajes: 41
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: error en sentencia de login

lo que estoy realizando es un login,
"usuario" y "codigo" , que debe ingresar cada user, pero la funcion limpiar me permite que me devuelva valores vacios en los "input" cada ves que ingreso los datos mencionados
  #5 (permalink)  
Antiguo 22/07/2015, 11:57
Avatar de Panicav  
Fecha de Ingreso: diciembre-2007
Ubicación: Rosario, Santa Fe - Argentina.
Mensajes: 135
Antigüedad: 17 años
Puntos: 8
Respuesta: error en sentencia de login

No comprendo del todo pero si la función limpiar() hace que como "result" de algo vacio o null el proceso de logueo es imposible, prueba sin pasar por esa fucion a ver que pasa, o bien expone la funcion limpiar() para poder entender que es lo que hace en verdad.
  #6 (permalink)  
Antiguo 22/07/2015, 12:02
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 5 meses
Puntos: 263
aqui estas cargando nada en las variables:
Código PHP:
Ver original
  1. $usuario=limpiar($_POST['usuario']);
  2.             $contra=limpiar($_POST['password']);

te recomiendo que la limpieza la realices luego de ejecutar el inicio de sesion y cuando genere algun error
__________________
[email protected]
HITCEL

Última edición por Triby; 23/07/2015 a las 21:36 Razón: Combinar mensajes consecutivos
  #7 (permalink)  
Antiguo 22/07/2015, 13:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: error en sentencia de login

Cita:
Iniciado por angelica19 Ver Mensaje
lo que estoy realizando es un login,
"usuario" y "codigo" , que debe ingresar cada user, pero la funcion limpiar me permite que me devuelva valores vacios en los "input" cada ves que ingreso los datos mencionados
Entiende que el hecho de que nos digas que esa función hace X cosa, no implica que lo esté haciendo bien... Si no vemos el código no podemos saber si está bien o mal programado.



Lo lamento, pero tu palabra no alcanza. Necesitamos VERLO.
Sin pretender ofender, pero muchas veces nos juraron que algo hacía algo, y luego comprobamos que no era tal.

¿No te parece?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 22/07/2015, 13:14
 
Fecha de Ingreso: junio-2015
Ubicación: Lima
Mensajes: 41
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: error en sentencia de login

aqui lo tengo en mi configuración,


Código PHP:
<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_docente "localhost";
$database_docente "registro-academico-undc";
$username_docente "root";
$password_docente "123"
date_default_timezone_set("America/Lima");
$docente mysql_pconnect($hostname_docente$username_docente$password_docente) or trigger_error(mysql_error(),E_USER_ERROR); 
mysql_set_charset('utf8');
mysql_query("SET NAMES 'UTF8'");
$s='$';

$paa=mysql_query("SELECT * FROM universidad WHERE id=1");                    
    if(
$dato=mysql_fetch_array($paa)){
        
$maxima_nota=$dato['nota_maxima'];
        
$minima_nota=$dato['nota_minima'];
    }    
    
    function 
limpiar($tags){
        
$tags strip_tags($tags);
        
$tags stripslashes($tags);
        
$tags htmlentities($tags);
        
$tags mysql_real_escape_string($tags);
        return 
$tags;
    }
?>
me refiero a que limpia las variables una vez ejecutadas
  #9 (permalink)  
Antiguo 23/07/2015, 07:10
Avatar de Panicav  
Fecha de Ingreso: diciembre-2007
Ubicación: Rosario, Santa Fe - Argentina.
Mensajes: 135
Antigüedad: 17 años
Puntos: 8
Respuesta: error en sentencia de login

probaría procesar la info sin la función limpiar(), si funciona bien es evidente que el nombre de usuario y contraseña no son coincidentes en caracteres con la base de datos, por ende hay que revisar los caracteres permitidos en usuario y pass.
  #10 (permalink)  
Antiguo 23/07/2015, 09:38
 
Fecha de Ingreso: noviembre-2008
Ubicación: Cochabamba Bolivia
Mensajes: 519
Antigüedad: 16 años
Puntos: 26
Respuesta: error en sentencia de login

Asi a simle vista podemos suponer 2 opciones:
  1. Estas intentando loguearte con una cadena que incluye caracteres especiales, el cual son transformados en la funcion limpiar y asi no se pueden igualar con los datos de la BD
  2. No existen los datos en la BD

Es diificil ayudarte si no sigues los consejos, haz lo que te dicen, quita la funcion limpiar, si el problema desaparece el error esta en esa función, si la función esta bien, el problema son una de las opciones que te digo.

Otro consejo seria darle print_r a los valores que le pasas por la funcion limpiar, para ver que es lo que te devuelve y coincidir con la info de la BD, asi mismo, podrías darle un mysql_num_rows para ver si existen datos en la BD y si en caso existen recién extraer esos datos.

Ojo, esa funcion que usas en limpiar() "mysql_real_escape_string" a la larga sera desestimada, no creo que sea el problema si tienes la version inferior a 5.50 de PHP, pero por si acaso.

Saludos

Etiquetas: condición, login, sentencia
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 22:01.