Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: mokoMonster en 4 Agosto 2010, 01:58 am



Título: Ayuda con script login
Publicado por: mokoMonster en 4 Agosto 2010, 01:58 am
Buenas, según yo este script debe funcionar, pero al comparar los password introducidos por el usuario en el campo password con el password de la base de datos aparece el mensaje de error.

NOTA: El password en la base de datos esta en md5, por lo cual siento que este script debe funcionar porque los dos son iguales.


<?php
session_start();
include("conex.php");

$link=Conectarse();
$noUsuario=$_POST['noUsuario'];
$password=md5($_POST['password']);

$query= mysql_query("SELECT noUsuario,password FROM Usuarios WHERE noUsuario='$noUsuario'",$link) or die(mysql_error());
$data = mysql_fetch_array($query);

if ($noUsuario=='') {
echo '
<table width="70%" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td bgcolor="#FFF"><br/><br/><br/>';
//Mensaje de campos vacios.
    echo "<center><strong>Campos Usuario o Contraseña Incorrectos<br/>Por favor llene correctamente los campos. USER<br/><a href='javascript:history.go(-1)'> Atras</a></strong></center>";
echo '</td>
  </tr>
</table><br/><br/><br/>';
mysql_close($query);
exit;
}

elseif (($password !='')||($data['password']!=$password)) {
echo '
<table width="70%" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td bgcolor="#FFF"><br/><br/><br/>';
    echo "<center><strong>Campos Usuario o Contraseña Incorrectos<br/>Por favor llene correctamente los campos. PWD<br/><a href='javascript:history.go(-1)'> Atras</a></strong></center>";
echo '</td>
  </tr>
</table><br/><br/><br/>';
mysql_close($query);
exit;

    }else{
    $query = mysql_query("SELECT noUsuario,password FROM Usuarios WHERE noUsuario = '$noUsuario' AND password='$password'",$link) or die(mysql_error());
    $row = mysql_fetch_array($query);

    $_SESSION['noUsuario'] = $row['noUsuario']; 
$_SESSION['password'] = $row['password'];
echo '<br/><br/><br/>
<table width="70%" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td bgcolor="#FFF">';
echo "<center><strong>".$row['noUsuario']."<br/><a href='javascript:history.go(-1)'> Atras</a></strong></center>";
echo '</td>
  </tr>
</table><br/><br/><br/>';
mysql_close($query);
exit;
}
?>
Bueno, Muchas gracias por su ayuda para localizar el error.
Saludos  ;)


Título: Re: Ayuda con script login
Publicado por: Shell Root en 4 Agosto 2010, 02:03 am
You say the password in the database is encryptada MD5, but at the time of the query in PHP, the password is not encryptada.

From MySQL query
Código
  1. SELECT noUsuario, password
  2.  FROM Usuarios
  3. WHERE ((noUsuario = 'ALEX') AND (password = MD5('ALEX')));

From PHP
Código
  1. $noUsuario = 'ALEX';
  2. $password = 'ALEX';
  3. $password = MD5($password);
  4. $query = mysql_query("SELECT noUsuario,password FROM Usuarios WHERE noUsuario = '".$noUsuario."' AND password='".$password."'",$link) or die(mysql_error());


Título: Re: Ayuda con script login
Publicado por: mokoMonster en 4 Agosto 2010, 02:24 am
Bueno de hecho la contraseña esta guardada desde el registro en MD5, es decir, cuando el usuario mete el pass este se cifra guardando el valor cifrado en la tabla, por lo que $password=MD5($_POST['password']); deberia ser igual al campo de la tabla.

Hice algunos cambios de acuerdo a tu respuesta, pero sigue dandome el error.

<?php
session_start();
include("conex.php");

$link=Conectarse();
$noUsuario=$_POST['noUsuario'];
// Cambio
$password=$_POST['password'];
$password=md5($password);
// Cambio
$query = mysql_query("SELECT noUsuario,password FROM Usuarios WHERE noUsuario = '".$noUsuario."' AND password='".$password."'",$link) or die(mysql_error());
$data = mysql_fetch_array($query);

if ($noUsuario=='') {
echo '
<table width="70%" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td bgcolor="#FFF"><br/><br/><br/>';
//Mensaje de campos vacios.
    echo "<center><strong>Campos Usuario o Contraseña Incorrectos<br/>Por favor llene correctamente los campos. USER<br/><a href='javascript:history.go(-1)'> Atras</a></strong></center>";
echo '</td>
  </tr>
</table><br/><br/><br/>';
mysql_close($query);
exit;
}

elseif (($password !='')||($data['password']!=$password)) {
echo '
<table width="70%" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td bgcolor="#FFF"><br/><br/><br/>';
    echo "<center><strong>Campos Usuario o Contraseña Incorrectos<br/>Por favor llene correctamente los campos. PWD<br/><a href='javascript:history.go(-1)'> Atras</a></strong></center>";
echo '</td>
  </tr>
</table><br/><br/><br/>';
mysql_close($query);
exit;

    }else{
// Cambio
    $query = mysql_query("SELECT noUsuario,password FROM Usuarios WHERE noUsuario = '".$noUsuario."' AND password='".$password."'",$link) or die(mysql_error());
    $row = mysql_fetch_array($query);
    $_SESSION['noUsuario'] = $row['noUsuario']; 
$_SESSION['password'] = $row['password'];
echo '<br/><br/><br/>
<table width="70%" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td bgcolor="#FFF">';
echo "<center><strong>".$row['noUsuario']."<br/><a href='javascript:history.go(-1)'> Atras</a></strong></center>";
echo '</td>
  </tr>
</table><br/><br/><br/>';
mysql_close($query);
exit;
}
?>

Saludos


Título: Re: Ayuda con script login
Publicado por: Shell Root en 4 Agosto 2010, 02:30 am
Ok, ok, sorry did not see it. Attempts to display the query and verify it within the MySQL console. For example:
Código
  1. echo "SELECT noUsuario, password FROM Usuarios WHERE noUsuario = '".$noUsuario."' AND password='".$password."'";


Título: Re: Ayuda con script login
Publicado por: mokoMonster en 4 Agosto 2010, 02:46 am
Ok, mira hice un echo como lo pusiste en el script php (porque no entiendo por que debo ejecutar el script php en la consola MySQL) y me devolvio esto:

SELECT noUsuario, password FROM Usuarios WHERE noUsuario = 'mokomonster' AND password='e274672404ejemplo70b40651792'

Y como no estaba seguro de lo que querias con el echo, tambien hice un echo $query; y me devolvio esto:

Resource id #7...


Título: Re: Ayuda con script login
Publicado por: mokoMonster en 4 Agosto 2010, 03:12 am
Código:
SELECT * 
FROM  `Usuarios`
WHERE noUsuario =  'mokomonster'
AND PASSWORD =  'e274672404eejemplo97d70b40651792'
LIMIT 0 , 30

Ejecute esta sentencia en la consola MySql y si me devolvio la fila del registro.

De verdad no entiendo que es lo que esta mal, saludos.


Tambien hice esta

Código:
SELECT * 
FROM  `Usuarios`
WHERE (

PASSWORD = MD5(  'palabrasecreta' )
)
LIMIT 0 , 30
y me devolvio la fila :) entonces aun peor, no ntiendo que eesta mal


Título: Re: Ayuda con script login
Publicado por: MinusFour en 4 Agosto 2010, 04:00 am
Y donde es que te atoras?

Código
  1. <?php
  2. include("conex.php");
  3.  
  4. $link=Conectarse();
  5. $noUsuario=$_POST['noUsuario'];
  6. $password=md5($_POST['password']);
  7. $query = mysql_query("SELECT noUsuario,password FROM Usuarios WHERE noUsuario = '".$noUsuario."' AND password='".$password."'",$link) or die(mysql_error());
  8.  
  9. $data = mysql_fetch_array($query);
  10.  
  11. if (empty($noUsuario)) {
  12. echo '
  13. <table width="70%" border="0" align="center" cellpadding="0" cellspacing="0">
  14.  <tr>
  15.    <td bgcolor="#FFF"><br/><br/><br/>';
  16. //Mensaje de campos vacios.
  17.    echo "<center><strong>Campos Usuario o Contrase&#241;a Incorrectos<br/>Por favor llene correctamente los campos. USER<br/><a href='javascript:history.go(-1)'> Atras</a></strong></center>";
  18. echo '</td>
  19.  </tr>
  20. </table><br/><br/><br/>';
  21. mysql_close($query);
  22. }
  23.  
  24. elseif (empty($password) || ($data['password']!=$password)) {
  25. echo '
  26. <table width="70%" border="0" align="center" cellpadding="0" cellspacing="0">
  27.  <tr>
  28.    <td bgcolor="#FFF"><br/><br/><br/>';
  29.    echo "<center><strong>Campos Usuario o Contrase&#241;a Incorrectos<br/>Por favor llene correctamente los campos. PWD<br/><a href='javascript:history.go(-1)'> Atras</a></strong></center>";
  30. echo '</td>
  31.  </tr>
  32. </table><br/><br/><br/>';
  33. mysql_close($query);
  34.  
  35.    }else{
  36. // Cambio
  37.    $query = mysql_query("SELECT noUsuario,password FROM Usuarios WHERE noUsuario = '".$noUsuario."' AND password='".$password."'",$link) or die(mysql_error());
  38.  
  39.    $row = mysql_fetch_array($query);
  40.    $_SESSION['noUsuario'] = $row['noUsuario'];  
  41. $_SESSION['password'] = $row['password'];
  42. echo '<br/><br/><br/>
  43. <table width="70%" border="0" align="center" cellpadding="0" cellspacing="0">
  44.  <tr>
  45.    <td bgcolor="#FFF">';
  46. echo "<center><strong>".$row['noUsuario']."<br/><a href='javascript:history.go(-1)'> Atras</a></strong></center>";
  47. echo '</td>
  48.  </tr>
  49. </table><br/><br/><br/>';
  50. mysql_close($query);
  51. }
  52. ?>

Hice solo un par de cambios... pero sería buena idea de que mostrarás hacia donde se mueve el código a la hora de ejecutarse para ver en que condición cae.

Edit: Tengo la ligera sospecha de que cae en el elseif... lo cual significa que o la password esta vacía o que no concuerdan las passwords.

Imprime las dos variables para ver si son las mismas

Código
  1. echo "<h1>".$data['password']." != ".$password."</h1>";
  2.  


Título: Re: Ayuda con script login
Publicado por: mokoMonster en 4 Agosto 2010, 04:13 am
Perfecto, ahora funciona, en realidad no se que estaba mal, supongo que el $value='';, pero bueno ahora funciona, me da error al cerrar la conexion con mysql_close($query); , pero eso ya lo resovlere. Muchas garcias.
Saludos.


Título: Re: Ayuda con script login
Publicado por: Dznp en 4 Agosto 2010, 04:25 am
Es obvio que eso te va a dar error, ya que no podes cerrar la conexión de una consulta :B

Proba mysql_close($link);    ;)