Foros del Web » Programando para Internet » PHP »

Problema con inicio de sesión consulta

Estas en el tema de Problema con inicio de sesión consulta en el foro de PHP en Foros del Web. Bueno estaba leyendo sobre mysqli_real_escape_string y como me interesa más la seguridad encontre un código de la página de phpnet http://www.php.net/manual/es/function.mysql-real-escape-string.php Pero el problema es ...
  #1 (permalink)  
Antiguo 27/06/2014, 23:12
 
Fecha de Ingreso: agosto-2013
Ubicación: En Saturno.
Mensajes: 19
Antigüedad: 10 años, 8 meses
Puntos: 0
Exclamación Problema con inicio de sesión consulta

Bueno estaba leyendo sobre mysqli_real_escape_string y como me interesa más la seguridad encontre un código de la página de phpnet

http://www.php.net/manual/es/function.mysql-real-escape-string.php

Pero el problema es qué una vez ya colocado mi codigo en mi sistema al tratar de iniciar sesión me devuelve error que el email y contraseña no coinciden ¿?

Código PHP:
Ver original
  1. if($_POST['action'] == 'user_login')
  2. {
  3. $post_email = htmlentities(addslashes(mysqli_real_escape_string($_POST['email']));
  4. $post_password = htmlentities(addslashes(mysqli_real_escape_string(crypt($_POST['password']));
  5.      
  6.      $sql = sprintf("SELECT * FROM users WHERE mail='%s' AND password='%s'",
  7.      mysqli_real_escape_string($post_email),  
  8.      mysqli_real_escape_string($post_password));
  9.      
  10.      if($row = mysqli_fetch_array($sql))
  11.      {  
  12.      $_SESSION['id'] = mysqli_real_escape_string($row['id']);
  13.      $_SESSION['username'] = mysqli_real_escape_string($row['username']);
  14.  
  15.      echo 'OK';
  16.      }
  17.      else
  18.      {
  19.      $auth_error = '<div id="notification_error"><span><img src="images/icon_error.gif"> El e-mail y/o contraseña no coinciden.</div></span>';
  20.  
  21.      echo $auth_error;
  22.      
  23.     }
  24. }

Código de la página de phpnet
Código PHP:
Ver original
  1. <?php
  2. // Conexión
  3. $enlace = mysql_connect('anfitrión_mysql', 'usuario_mysql', 'contraseña_mysql')
  4.     OR die(mysql_error());
  5.  
  6. // Consulta
  7. $consulta = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
  8.             mysql_real_escape_string($usuario),
  9.             mysql_real_escape_string($contraseña));
  10. ?>

solo copie la consulta de ese código y lo adapte al mio, pero no se que sucede...

Última edición por Sucket; 27/06/2014 a las 23:19
  #2 (permalink)  
Antiguo 28/06/2014, 00:17
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problema con inicio de sesión consulta

Para empezar, basta con que una y solo una vez realices la desinfección de los datos, no por cada vez que vayas a utilizarlos. Por otro lado, veo que encriptas la contraseña antes de hace la consulta, quizá ahí está el error pues el valor encriptado será distinto por cada vez que utilices la función crypt.

Por ejemplo:

Código PHP:
Ver original
  1. $string = 'hola';
  2. echo crypt($string);
  3. echo crypt($string);
  4. echo crypt($string);
  5. echo crypt($string);
  6. echo crypt($string);

Imprime lo siguiente:
Código HTML:
Ver original
  1. $6$39LhNARSOo8k$YyNVRt129lGZQsyJaEW8SNZLNcNI7b/NRk7/uE3vKwN./I/3..nFLP0rpvUzHYQTIEbDANyGR7XJ9musknc1p0
  2. $6$IF/yGtWb/oQ/$NWQt1Qx26ZkCyRBqss.Vlrob6WLnmkfKEaP9RV4KgNxvSnn6MsPg3ADnmDa5NhaKievJ23Am89fmtN452jygy0
  3. $6$b4KhbviunMgO$mDNDKw9NQU337tGZnavM0Vmm2uM0uFZkrpck5JBub/xMXvWkbimnKwWBwgE500HO0.yiXjxKGuUwCqa/MMrtO/
  4. $6$85H16r9tk1fi$Csizfyj5qBwI9HJDytkUiLb8JRLvu7riAsa1iInXkT.5LW9JlHd44sHDYL.qmV9ur/xXbaLGw8HJh2QvefRtA0
  5. $6$qCTmMZstRk5A$pOmm1FKRZORDHkUeK56zv4dCegn9qlgND09xByVO1J.mCfPU3FPhN5nyLHox3IrF3OYXI42CkM7EctIAqZ80c/

Todas las cadenas generadas son distintas a pesar de que la cadena base es la misma. Ve la manera de no tener que utilizar esa función para hacer la consulta.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: errores, mysql, php+bd+mysql
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:18.