Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] problema md5 en php

Estas en el tema de problema md5 en php en el foro de PHP en Foros del Web. Hola muy buenas a todos! soy un principiante en esto del php y las bases de datos... pero como os pasaria a todos os gusta ...
  #1 (permalink)  
Antiguo 10/02/2014, 15:17
 
Fecha de Ingreso: febrero-2014
Mensajes: 3
Antigüedad: 10 años, 2 meses
Puntos: 0
problema md5 en php

Hola muy buenas a todos! soy un principiante en esto del php y las bases de datos... pero como os pasaria a todos os gusta hacer cosas que aun no sabemos jeje
Mi problema es que intenté crear un login en php y la base de datos phpmyslq. Al crear los usuarios con cifrandolos con md5 al acceder en el login me da errores... en cambio si no cifro con md5 los usuarios nuevos, el sistema funciona a la perfección... os dejo mi código por si alguien puede hecharme una mano.

Codigo en index.php
Código PHP:
<?php
    
if (isset($_SESSION['nick']))
{
?>

<div id="sesion_iniciada">
<img src="imagenes/autor.png" alt="" /><br />
    Hola 
    <?= $_SESSION['nick']    ?> Ya iniciaste sesion |<br /> <a href="logout.php">Cerras Sesion</a>
    
    
    </div>
    <?
} else {
?>


<div id="sesion_sin_iniciar">
<div>Inicia sesión</div>
<form style="font-size: 15px;" method="post" action="login.php">
<br />
Nick de Usuario: <br /><input type="text" style="width: 80%;" name="nick"/><br />
Contraseña <br /><input type="password" style="width: 80%;" name="pass"/><br />
<button id="iniciar_sesion"  type="submit" name="enviar">Acceder</button>
</form>
</div>
<?

}
?>
Codigo en login.php

Código PHP:

<?php 
session_start
();
include 
"config.php";
if (isset(
$_POST['enviar']))
{

$nick mysql_real_escape_string($_POST['nick']);
$pass mysql_real_escape_string(md5($_POST['pass']));
$sql mysql_query("SELECT id, nick, pass FROM registro WHERE nick = '".$nick."' AND pass = '".$pass."'" );
if(
$row mysql_fetch_array($sql))
{
            
$_SESSION['nick'] = $row['nick'];
        
$_SESSION['pass'] = md5($row['pass']);
        
header ("Location: index.php");
    
}else{
    echo 
$pass;
        echo 
"El usuario o la contraseña son inválidos";
        echo 
"<a href=' javascript:history.back();'>Regresar</a>";
        }
}
?>
Codigo config.php

Código PHP:
<?php
$conex 
mysql_connect ("localhost","root","")
or die (
"No se pudo conectar al servidor");

$db mysql_select_db("paginaweb",$conex)
or die (
"la base de datos no existe")

?>
Gracias a todos! un saludo
  #2 (permalink)  
Antiguo 10/02/2014, 16:55
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: problema md5 en php

¿Y qué errores obtienes?

Por otra parte, esto
$pass = mysql_real_escape_string(md5($_POST['pass']));

es innecesario, he visto varias veces el código y parece que lo han sacado del mismo sitio, pero si pasas una cadena a md5, ésta ya no requiere el filtro mysql_real_escape_string
  #3 (permalink)  
Antiguo 11/02/2014, 06:09
Avatar de Geghnar  
Fecha de Ingreso: noviembre-2012
Ubicación: Vigo
Mensajes: 17
Antigüedad: 11 años, 5 meses
Puntos: 2
Respuesta: problema md5 en php

Estoy de acuerdo con el compañero en que saber qué error te da ayudaría mucho...

De todas maneras veo que, por un lado, en el index no inicias sesión; y por otro lado, en el login.php, cuando obtienes el pass desde la BBDD, lo codificas de nuevo a md5;

Código PHP:
$_SESSION['pass'] = md5($row['pass']); 
cuando debería ser:
Código PHP:
$_SESSION['pass'] = $row['pass']; 
si ya lo habías guardado codificado (al registrarse el usuario), lo obtienes también codificado.

No sé si servirá de algo...

Un saludo.
  #4 (permalink)  
Antiguo 11/02/2014, 12:42
 
Fecha de Ingreso: febrero-2014
Mensajes: 3
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: problema md5 en php

Disculpen mi consulta... cometí un despiste muy tonto a la hora de crear la base de datos.... guardaba el nick en la zona del nombre y así era imposible que me lo reconociera bien
Muchas gracias por contextar tan rápido... un saludo!
  #5 (permalink)  
Antiguo 11/02/2014, 13:16
 
Fecha de Ingreso: febrero-2014
Mensajes: 3
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: problema md5 en php

Cita:
Iniciado por ocp001a Ver Mensaje
¿Y qué errores obtienes?

Por otra parte, esto
$pass = mysql_real_escape_string(md5($_POST['pass']));

es innecesario, he visto varias veces el código y parece que lo han sacado del mismo sitio, pero si pasas una cadena a md5, ésta ya no requiere el filtro mysql_real_escape_string
El error lo tenia aqui:
Código PHP:
mysql_query("INSERT INTO registro VALUES('', '$nick' , '$realname' , '$pass' , '$email')"); 
Tenia en mal orden $nick y $realname por lo que me guardaba en la base de datos en el lugar incorrecto... el md5 estaba bien ya que lo había comprobado mediante un echo...
si tu me dices que no es necesario aplicarle el filtro mysql_real_escape_string lo quitaré jeje estube siguiendo un tutorial de youtube que lo explica muy bien si quieres hecharle un vistazo te lo envio sin problema... gracias ;)
  #6 (permalink)  
Antiguo 11/02/2014, 13:21
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: problema md5 en php

Sí, entiendo que alguien colocó un tutorial con estos pasos y no es que te de resultados adversos, si no que el uso de mysql_real_escape_string sobre una cadena proveniente de md5 es un paso innecesario, ya que aún si te colocan código sql u otro dentro del campo password, al pasar por md5 perderá todo potencial malicioso, y si esta función la aplicas por cada usuario que hace login, cuando tengas muchos usuarios será un consumo extra de recursos.

Etiquetas: md5, phpmysql
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 11:15.