Foros del Web » Programando para Internet » PHP »

Problemas al comparar datos traídos desde MySQL

Estas en el tema de Problemas al comparar datos traídos desde MySQL en el foro de PHP en Foros del Web. Buenas noches. Estoy haciendo un formulario de logueo pero estoy teniendo problemas al momento de comparar las contraseñas encriptadas traídas desde la base de datos. ...
  #1 (permalink)  
Antiguo 31/01/2014, 22:24
 
Fecha de Ingreso: mayo-2013
Ubicación: Cúcuta
Mensajes: 98
Antigüedad: 10 años, 11 meses
Puntos: 2
Problemas al comparar datos traídos desde MySQL

Buenas noches. Estoy haciendo un formulario de logueo pero estoy teniendo problemas al momento de comparar las contraseñas encriptadas traídas desde la base de datos. Aquí mi código:

El formulario:

Código HTML:
 <div class="block blur">
        <div class="container">
            <div class="row">            
                <div class="span12">         
                    <div class="clear-form">
                      <?php

                        session_start();
                        if (empty($_SESSION['nickname'])) {
                                        

                          ?>                                 
                        <form action="comprobar.php" method="post">               
                            <div class="form-heading gray">
                                <h3 class="header center">Ingresa</h3>
                            </div>  
                            <div class="form-body">
                                <div class="pair-group">                                 
                                    <input type="text" class="input-block-level" placeholder="Nickname" name="nickname">
                                    <input type="password" class="input-block-level" placeholder="Contraseña" name="pwd">
                                </div>
                            </div>                                
                            <div class="form-footer">                                
                                <button class="btn btn-large btn-blue btn-block" type="submit" name="enviar">Entrar</button> 
                                <p class="center">¿No eres un miembro? <a href="../registro">¡Registrate!</a> <i class="icon-arrow-right"></i></p>
                            </div>                
                        </form>
                        <?php }else{ ?>
                        
                        <p>Bienvenido, <strong><?php $_SESSION['nickname'] ?></strong> | <a href="../">Ir al inicio</a></p>

                        <?php } ?>

                    </div>
                </div>   
            </div>
        </div>
    </div> 
Y el código de comprobar.php

Código PHP:
 <?php

    $enviar 
$_POST['enviar'];
    
$nickname $_POST['nickname'];
    
$pwd md5($_POST['pwd']);

    
session_start();
    include(
'../config/cnx.php');
    if(isset(
$enviar)) {         
        if(empty(
$nickname) || empty($pwd)) {
            echo 
"El usuario o la contraseña no han sido ingresados. <a href='javascript:history.back();'>Reintentar</a>";
        }else {                        
            
$pwd md5($pwd);            
            
$sql sprintf("SELECT iduser, nickname, password FROM usuarios WHERE nickname = '%s' AND password = '%s'",mysqli_real_escape_string($conexion,$nickname),mysqli_real_escape_string($conexion,$pwd));
            
$query mysqli_query($conexion,$sql);
            
            if(
$row mysqli_fetch_array($query)) {
                
$_SESSION['iduser'] = $row['iduser']; 
                
$_SESSION['nickname'] = $row["nickname"]; 
                
header("Location: index.php");
            }else {
?>
                Error, <a href="index.php">Reintentar</a>
<?php
            
}
        }
    }else {
        
header("Location: index.php");
    }
?>
El error está en que así le de correctamente la contraseña el login falla ¿alguna ayuda o sugerencia que me puedan dar? Gracias :)
  #2 (permalink)  
Antiguo 31/01/2014, 22:29
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problemas al comparar datos traídos desde MySQL

Muestra el código que tienes para registrar al usuario.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 31/01/2014, 22:36
 
Fecha de Ingreso: mayo-2013
Ubicación: Cúcuta
Mensajes: 98
Antigüedad: 10 años, 11 meses
Puntos: 2
Respuesta: Problemas al comparar datos traídos desde MySQL

Este es el código para registrar al usuario

Código PHP:
Ver original
  1. <div class="block dark">
  2.         <div class="container">
  3.             <div class="row">
  4.                 <div class="span12">
  5.                     <div class="clear-form no-border">  
  6.                             <div class="form-heading">
  7.                                 <h3 class="header">Registrate</h3>  
  8.                                 <hr/>                            
  9.                             </div>  
  10.                             <div class="form-body">
  11.                                 <?php
  12.  
  13.                                   if (isset($_POST['enviar'])) {
  14.  
  15.                                     $nickname = $_POST['nickname'];
  16.                                     $nombre = $_POST['nombre'];
  17.                                     $email = $_POST['email'];
  18.                                     $pwd = $_POST['pwd'];
  19.                                     $repwd = $_POST['repwd'];
  20.  
  21.                                     function validar_email($email){
  22.                                       if (preg_match('/^[A-Za-z0-9-_.+%]+@[A-Za-z0-9-.]+\.[A-Za-z]{2,4}$/', $email)) return true;
  23.                                       else return false;        
  24.                                     }
  25.                                     $sin_espacios = count_chars($nickname, 1);
  26.                                     if(!empty($sin_espacios[50])) {
  27.                                       echo "El campo <em>nickname</em> no debe contener espacios en blanco. <a href='javascript:history.back();'>Reintentar</a><br />";
  28.                                     }elseif(empty($nickname)) {
  29.                                       echo "No haz ingresado tu nickname. <a href='javascript:history.back();'>Reintentar</a><br />";
  30.                                     }elseif(empty($nombre)) {
  31.                                       echo "No haz ingresado tu nombre. <a href='javascript:history.back();'>Reintentar</a><br />";
  32.                                     }elseif (!validar_email($email)) {
  33.                                       echo "El email ingresado no es válido. <a href='javascript:history.back();'>Reintentar</a><br />";
  34.                                     }elseif (empty($pwd)) {
  35.                                       echo "No haz ingresado tu contraseña. <a href='javascript:history.back();'>Reintentar</a><br />";
  36.                                     }elseif($pwd != $repwd) {
  37.                                       echo "Las contraseñas ingresadas no coinciden. <a href='javascript:history.back();'>Reintentar</a><br />";
  38.                                     }else {        
  39.                                       $sql = sprintf("SELECT nickname FROM usuarios WHERE nickname='%s'",mysqli_real_escape_string($conexion, $nickname));
  40.                                       $sql2 = sprintf("SELECT email FROM usuarios WHERE email='%s'",mysqli_real_escape_string($conexion, $email));
  41.  
  42.                                       $query = mysqli_query($conexion,$sql) or die('Error en query1 '.mysqli_error($conexion));
  43.                                       $query2 = mysqli_query($conexion,$sql2) or die('Error en query2 '.mysqli_error($conexion));
  44.  
  45.  
  46.                                       if (mysqli_num_rows($query) > 0) {
  47.                                         echo "El nickname elegido ya ha sido registrado anteriormente. <a href='javascript:history.back();'>Reintentar</a>";
  48.                                       }elseif (mysqli_num_rows($query2)) {
  49.                                         echo "El email elegido ya ha sido registrado anteriormente. <a href='javascript:history.back();'>Reintentar</a>";
  50.                                       }else{
  51.                                         $pwd = md5($pwd);          
  52.                                         $query3 = sprintf("INSERT INTO usuarios (nickname,nombre,email,password,fecha) VALUES ('%s','%s','%s','%s',NOW())",mysqli_real_escape_string($conexion, $nickname),mysqli_real_escape_string($conexion, $nombre),mysqli_real_escape_string($conexion, $email),mysqli_real_escape_string($conexion, $pwd))or die('Error en query3 '.mysqli_error());
  53.                                         $reg = mysqli_query($conexion,$query3);
  54.                                         if ($reg) {
  55.                                           echo 'Datos ingresados correctamente';
  56.                                         }else{
  57.                                           echo 'Ha ocurrido un error y no se han ingresado los datos ' .mysqli_error($conexion);
  58.                                         }
  59.                                       }
  60.                                     }
  61.                                   }else{
  62.  
  63.                                 ?>
  64.                               <form action="<?=$_SERVER['PHP_SELF']?>" method="post">
  65.  
  66.                                 <span class="form-label">Escribe tu nickname</span>
  67.                                 <input type="text" class="input-block-level" name="nickname">
  68.  
  69.                                 <span class="form-label">Escribe tu nombre real</span>
  70.                                 <input type="text" class="input-block-level" name="nombre">
  71.  
  72.                                 <span class="form-label">Ingresa tu correo electrónico</span>
  73.                                 <input type="email" class="input-block-level" name="email">
  74.  
  75.                                 <span class="form-label">Ingresa tu contraseña</span>
  76.                                 <input type="password" class="input-block-level" name="pwd">
  77.  
  78.                                 <span class="form-label">Confirma tu contraseña</span>
  79.                                 <input type="password" class="input-block-level" name="repwd">                          
  80.                                
  81.                                 <p class="highlight">
  82.                                     Al hacer click en el botón de confirmación estás al tanto de que el contenido de esta web es solo para fines de prueba y/o copia de seguridad del material original. Además nos eximes de cualquier responsabilidad por el uso del material aquí encontrado.
  83.                                 </p>                                
  84.                             </div>                                
  85.                             <div class="form-footer">                              
  86.                                 <input type="submit" class="btn btn-large btn-green btn-block" name="enviar" value="Crear">
  87.                                 <p class="center">
  88.                                      ¿Ya tienes una cuenta? <a href="http://www.forosdelweb.com/f18/iniciosesion">¡Ingresa!</a>.
  89.                                 </p>
  90.                             </div>                                        
  91.                         </form>
  92.                     </div>
  93.                 </div>
  94.             </div>
  95.         </div>        
  96.     </div>
  97.  
  98.     <?php } ?>
  #4 (permalink)  
Antiguo 31/01/2014, 23:55
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problemas al comparar datos traídos desde MySQL

Estás haciendo doble hash de $pwd:

Código PHP:
Ver original
  1. // Primero
  2.    $pwd = md5($_POST['pwd']);
  3.  
  4.    // Segundo
  5.    $pwd = md5($pwd);
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 01/02/2014, 07:34
 
Fecha de Ingreso: mayo-2013
Ubicación: Cúcuta
Mensajes: 98
Antigüedad: 10 años, 11 meses
Puntos: 2
Respuesta: Problemas al comparar datos traídos desde MySQL

Oh sí que torpe, no me había fijado. Pero lo corregí y quedó así

Código PHP:
 <?php

    $enviar 
$_POST['enviar'];
    
$nickname $_POST['nickname'];
    
$pwd $_POST['pwd'];

    
session_start();
    include(
'../config/cnx.php');
    if(isset(
$enviar)) {         
        if(empty(
$nickname) || empty($pwd)) {
            echo 
"El usuario o la contraseña no han sido ingresados. <a href='javascript:history.back();'>Reintentar</a>";
        }else {
            
$pwd md5($pwd);
            
$sql sprintf("SELECT iduser, nickname, password FROM usuarios WHERE nickname = '%s' AND password = '%s'",mysqli_real_escape_string($conexion,$nickname),mysqli_real_escape_string($conexion,$pwd));
            
$query mysqli_query($conexion,$sql);
            
            if(
$row mysqli_fetch_array($query)) {
                
$_SESSION['iduser'] = $row['iduser']; 
                
$_SESSION['nickname'] = $row['nickname']; 
                
header("Location: index.php");
            }else {
?>
                Error, <a href="index.php">Reintentar</a>
<?php
            
}
        }
    }else {
        
header("Location: index.php");
    }
?>
Y sigue sin funcionar me da error de todas maneras ¿alguna otra sugerencia?
  #6 (permalink)  
Antiguo 01/02/2014, 07:47
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Problemas al comparar datos traídos desde MySQL

hace echo de $sql y fijate si te muestra el mismo string que tenes en la base.
Código PHP:

   $sql 
sprintf("SELECT iduser, nickname, password FROM usuarios WHERE nickname = '%s' AND password = '%s'",mysqli_real_escape_string($conexion,$nickname),mysqli_real_escape_string($conexion,$pwd));

echo 
$sql;

            
$query mysqli_query($conexion,$sql); 
  #7 (permalink)  
Antiguo 01/02/2014, 07:51
 
Fecha de Ingreso: mayo-2013
Ubicación: Cúcuta
Mensajes: 98
Antigüedad: 10 años, 11 meses
Puntos: 2
Respuesta: Problemas al comparar datos traídos desde MySQL

Acabo de hacerlo pero me lo muestra diferente. En el echo del $sql me muestra una cosa y en el phpmyadmin me muestra otra cosa ¿qué puedo hacer?
  #8 (permalink)  
Antiguo 01/02/2014, 07:55
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Problemas al comparar datos traídos desde MySQL

fijate como estas guardando el usuario cuando lo das de alta. O mostra el codigo y lo vemos.
  #9 (permalink)  
Antiguo 01/02/2014, 07:58
 
Fecha de Ingreso: mayo-2013
Ubicación: Cúcuta
Mensajes: 98
Antigüedad: 10 años, 11 meses
Puntos: 2
Respuesta: Problemas al comparar datos traídos desde MySQL

Este es el código para registrar, como verás sí se encripta en md5 allí:

Código PHP:
Ver original
  1. <div class="block dark">
  2.         <div class="container">
  3.             <div class="row">
  4.                 <div class="span12">
  5.                     <div class="clear-form no-border">  
  6.                             <div class="form-heading">
  7.                                 <h3 class="header">Registrate</h3>  
  8.                                 <hr/>                            
  9.                             </div>  
  10.                             <div class="form-body">
  11.                                 <?php
  12.  
  13.                                   if (isset($_POST['enviar'])) {
  14.  
  15.                                     $nickname = $_POST['nickname'];
  16.                                     $nombre = $_POST['nombre'];
  17.                                     $email = $_POST['email'];
  18.                                     $pwd = $_POST['pwd'];
  19.                                     $repwd = $_POST['repwd'];
  20.  
  21.                                     function validar_email($email){
  22.                                       if (preg_match('/^[A-Za-z0-9-_.+%]+@[A-Za-z0-9-.]+\.[A-Za-z]{2,4}$/', $email)) return true;
  23.                                       else return false;        
  24.                                     }
  25.                                     $sin_espacios = count_chars($nickname, 1);
  26.                                     if(!empty($sin_espacios[50])) {
  27.                                       echo "El campo <em>nickname</em> no debe contener espacios en blanco. <a href='javascript:history.back();'>Reintentar</a><br />";
  28.                                     }elseif(empty($nickname)) {
  29.                                       echo "No haz ingresado tu nickname. <a href='javascript:history.back();'>Reintentar</a><br />";
  30.                                     }elseif(empty($nombre)) {
  31.                                       echo "No haz ingresado tu nombre. <a href='javascript:history.back();'>Reintentar</a><br />";
  32.                                     }elseif (!validar_email($email)) {
  33.                                       echo "El email ingresado no es válido. <a href='javascript:history.back();'>Reintentar</a><br />";
  34.                                     }elseif (empty($pwd)) {
  35.                                       echo "No haz ingresado tu contraseña. <a href='javascript:history.back();'>Reintentar</a><br />";
  36.                                     }elseif($pwd != $repwd) {
  37.                                       echo "Las contraseñas ingresadas no coinciden. <a href='javascript:history.back();'>Reintentar</a><br />";
  38.                                     }else {        
  39.                                       $sql = sprintf("SELECT nickname FROM usuarios WHERE nickname='%s'",mysqli_real_escape_string($conexion, $nickname));
  40.                                       $sql2 = sprintf("SELECT email FROM usuarios WHERE email='%s'",mysqli_real_escape_string($conexion, $email));
  41.  
  42.                                       $query = mysqli_query($conexion,$sql) or die('Error en query1 '.mysqli_error($conexion));
  43.                                       $query2 = mysqli_query($conexion,$sql2) or die('Error en query2 '.mysqli_error($conexion));
  44.  
  45.  
  46.                                       if (mysqli_num_rows($query) > 0) {
  47.                                         echo "El nickname elegido ya ha sido registrado anteriormente. <a href='javascript:history.back();'>Reintentar</a>";
  48.                                       }elseif (mysqli_num_rows($query2)) {
  49.                                         echo "El email elegido ya ha sido registrado anteriormente. <a href='javascript:history.back();'>Reintentar</a>";
  50.                                       }else{
  51.                                         $pwd = md5($pwd);          
  52.                                         $query3 = sprintf("INSERT INTO usuarios (nickname,nombre,email,password,fecha) VALUES ('%s','%s','%s','%s',NOW())",mysqli_real_escape_string($conexion, $nickname),mysqli_real_escape_string($conexion, $nombre),mysqli_real_escape_string($conexion, $email),mysqli_real_escape_string($conexion, $pwd))or die('Error en query3 '.mysqli_error());
  53.                                         $reg = mysqli_query($conexion,$query3);
  54.                                         if ($reg) {
  55.                                           echo 'Datos ingresados correctamente';
  56.                                         }else{
  57.                                           echo 'Ha ocurrido un error y no se han ingresado los datos ' .mysqli_error($conexion);
  58.                                         }
  59.                                       }
  60.                                     }
  61.                                   }else{
  62.  
  63.                                 ?>
  64.                               <form action="<?=$_SERVER['PHP_SELF']?>" method="post">
  65.  
  66.                                 <span class="form-label">Escribe tu nickname</span>
  67.                                 <input type="text" class="input-block-level" name="nickname">
  68.  
  69.                                 <span class="form-label">Escribe tu nombre real</span>
  70.                                 <input type="text" class="input-block-level" name="nombre">
  71.  
  72.                                 <span class="form-label">Ingresa tu correo electrónico</span>
  73.                                 <input type="email" class="input-block-level" name="email">
  74.  
  75.                                 <span class="form-label">Ingresa tu contraseña</span>
  76.                                 <input type="password" class="input-block-level" name="pwd">
  77.  
  78.                                 <span class="form-label">Confirma tu contraseña</span>
  79.                                 <input type="password" class="input-block-level" name="repwd">                          
  80.                                
  81.                                 <p class="highlight">
  82.                                     Al hacer click en el botón de confirmación estás al tanto de que el contenido de esta web es solo para fines de prueba y/o copia de seguridad del material original. Además nos eximes de cualquier responsabilidad por el uso del material aquí encontrado.
  83.                                 </p>                                
  84.                             </div>                                
  85.                             <div class="form-footer">                              
  86.                                 <input type="submit" class="btn btn-large btn-green btn-block" name="enviar" value="Crear">
  87.                                 <p class="center">
  88.                                      ¿Ya tienes una cuenta? <a href="http://www.forosdelweb.com/f18/iniciosesion">¡Ingresa!</a>.
  89.                                 </p>
  90.                             </div>                                        
  91.                         </form>
  92.                     </div>
  93.                 </div>
  94.             </div>
  95.         </div>        
  96.     </div>
  97.  
  98.     <?php } ?>
  #10 (permalink)  
Antiguo 01/02/2014, 08:09
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Problemas al comparar datos traídos desde MySQL

Registra un nuevo usuario y hace echo de
Código PHP:
$pwd md5($pwd);          
echo 
$pwd."<hr>";

$query3 sprintf("INSERT INTO usuarios (nickname,nombre,email,password,fecha) VALUES ('%s','%s','%s','%s',NOW())",mysqli_real_escape_string($conexion$nickname),mysqli_real_escape_string($conexion$nombre),mysqli_real_escape_string($conexion$email),mysqli_real_escape_string($conexion$pwd))or die('Error en query3 '.mysqli_error());

echo 
$query3."<hr>";                             

# y en el login 
$pwd md5($pwd);
echo 
$pwd."<hr>";

$sql sprintf("SELECT iduser, nickname, password FROM usuarios WHERE nickname = '%s' AND password = '%s'",mysqli_real_escape_string($conexion,$nickname),mysqli_real_escape_string($conexion,$pwd));
echo 
$sql."<hr>"
Fijate que lo 4 datos coincida
  #11 (permalink)  
Antiguo 01/02/2014, 09:30
 
Fecha de Ingreso: mayo-2013
Ubicación: Cúcuta
Mensajes: 98
Antigüedad: 10 años, 11 meses
Puntos: 2
Respuesta: Problemas al comparar datos traídos desde MySQL

Lo hice y no coinciden, en el login se muestra una cosa y en el registro otra.

Los datos ficticios fueron estos:
  • Nickname: prueba
  • Password: asd123asd

En el registro me dice:
Código Texto plano:
Ver original
  1. "
  2. 55deb7fd23a25aa863fb912ff7fc21d8
  3. INSERT INTO usuarios (nickname,nombre,email,password,fecha) VALUES ('prueba','pruebita','[email protected]','55deb7fd23a25aa863fb912ff7fc21d8',NOW())
  4. Datos ingresados correctamente"

Y en el comprobar del login dice:

Código Texto plano:
Ver original
  1. 2c832a38868f64fe63097334de8cc561
  2. SELECT iduser, nickname, password FROM usuarios WHERE nickname = 'prueba' AND password = '2c832a38868f64fe63097334de8cc561' Error, Reintentar

¿Qué hago? No le veo solución
  #12 (permalink)  
Antiguo 01/02/2014, 10:02
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Problemas al comparar datos traídos desde MySQL

hice la prueba y el problema esta en el login no en el registro.
Código PHP:
# esto hacelo con el scrip como lo tenes, y fijate el resultado
echo "'".$pwd."'";
$pwd md5($pwd);
echo 
"'".$pwd."'";

# con esto tiene que hace el login si o si, solo como prueba, forza la variable al pass real, en el ejemplo que me mandaste seria:
$pwd 'asd123asd';
$pwd md5($pwd);
$sql sprintf("SELECT iduser, nickname, password FROM usuarios WHERE nickname = '%s' AND password = '%s'",mysqli_real_escape_string($conexion,$nickname),mysqli_real_escape_string($conexion,$pwd));
$query mysqli_query($conexion,$sql); 
  #13 (permalink)  
Antiguo 01/02/2014, 15:41
 
Fecha de Ingreso: mayo-2013
Ubicación: Cúcuta
Mensajes: 98
Antigüedad: 10 años, 11 meses
Puntos: 2
Respuesta: Problemas al comparar datos traídos desde MySQL

Pido disculpas por la demora.

Bueno, coloqué la clave forzadamente y sin importar esto (le coloqué mil y un textos) el string en md5 es el mismo ._.

Este es el código:

Código PHP:
 <?php

    $enviar 
$_POST['enviar'];
    
$nickname $_POST['nickname'];
    
$pwd 'lole';
    echo 
$pwd.'<br />';

    
session_start();
    include(
'../config/cnx.php');
    if(isset(
$enviar)) {         
        if(empty(
$nickname) || empty($pwd)) {
            echo 
"El usuario o la contraseña no han sido ingresados. <a href='javascript:history.back();'>Reintentar</a>";
        }else {
            
            
$pwd md5($pwd);
            echo 
$pwd."<hr />";
            
$sql sprintf("SELECT iduser, nickname, password FROM usuarios WHERE nickname = '%s' AND password = '%s'",mysqli_real_escape_string($conexion,$nickname),mysqli_real_escape_string($conexion,$pwd));
            echo 
$sql;
            
$query mysqli_query($conexion,$sql);
            
            if(
$row mysqli_fetch_array($query)) {
                
$_SESSION['iduser'] = $row['iduser']; 
                
$_SESSION['nickname'] = $row['nickname']; 
                
header("Location: index.php");
            }else {
?>
                Error, <a href="index.php">Reintentar</a>
<?php
            
}
        }
    }else {
        
header("Location: index.php");
    }
?>
Y sin importar que valor le de a la variable $pwd esta sigue mostrando el mismo string md5. AYUDA Q_Q
  #14 (permalink)  
Antiguo 01/02/2014, 15:48
 
Fecha de Ingreso: mayo-2013
Ubicación: Cúcuta
Mensajes: 98
Antigüedad: 10 años, 11 meses
Puntos: 2
Respuesta: Problemas al comparar datos traídos desde MySQL

Es un poco tonto... Pero ya lo solucioné.

No tengo ni idea de que fue lo que pasó, bueno, de porqué pasó. Simplemente saqué el md5 de la condición junto con la sentencia sql. Quedó así:

Código PHP:
Ver original
  1. <?php
  2.  
  3.     include('../config/cnx.php');
  4.  
  5.     $enviar = $_POST['enviar'];
  6.     $nickname = $_POST['nickname'];
  7.     $pwd = $_POST['pwd'];
  8.     $pwd = md5($pwd);
  9.  
  10.     $sql = sprintf("SELECT iduser, nickname, password FROM usuarios WHERE nickname = '%s' AND password = '%s'",mysqli_real_escape_string($conexion,$nickname),mysqli_real_escape_string($conexion,$pwd));
  11.  
  12.     session_start();
  13.  
  14.     if(isset($enviar)) {        
  15.         if(empty($nickname) || empty($pwd)) {
  16.             echo "El usuario o la contraseña no han sido ingresados. <a href='javascript:history.back();'>Reintentar</a>";
  17.         }else {
  18.            
  19.             $query = mysqli_query($conexion,$sql);
  20.            
  21.             if($row = mysqli_fetch_array($query)) {
  22.                 $_SESSION['iduser'] = $row['iduser'];
  23.                 $_SESSION['nickname'] = $row['nickname'];
  24.                 header("Location: index.php");
  25.             }else {
  26. ?>
  27.                 Error, <a href="index.php">Reintentar</a>
  28. <?php
  29.             }
  30.         }
  31.     }else {
  32.         header("Location: index.php");
  33.     }
  34. ?>

Al parecer, no lo sabía, el hecho de que la sentencia esté en un condicional hace que su valor no varíe de acuerdo a lo que se declare anteriormente sino que se mantenga con un valor constante desconocido.

Doy por solucionado el tema pero si alguien quiere entrar y explicar este fenómeno será bienvenido. Muchas gracias a todos los que respondieron :) (Le doy el punto a luis quien fue el que se dio cuenta de en que script estaba el error)

Etiquetas: formulario, mysql, registro, select, 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 13:25.