convertir a md5 es incorrecto en php

Tengo un formulario en el que tomo el nombre de usuario y la contraseña del usuario, y estoy convirtiendo la contraseña en md5. Luego lo inserto en la base de datos. En el formulario de inicio de sesión de usuario, tomo la contraseña y la convierto en md5. Luego comparo ambas contraseñas. p@$$w0rd en alguna condición, pero falla si password = p@$$w0rd . Cual es el problema ? ¿Y cuál es la solución para este problema?

De mi formulario a la contraseña de la base de datos de p@$$w0rd a md5 es b7463760284fd06773ac2a48e29b0acf y del formulario de inicio de sesión es e22bb24ca616331cb92a48b712034bc3

Código del formulario de registro

 $password = trim($_POST['password']); $dpassword = md5($password); 

Y desde el formulario de inicio de sesión $passwd = md5($password);

 $sql = mysql_query("select * from create_dealer where (dealer_email='$user' && password='$passwd')"); 

El problema es con comillas.

 echo md5('p@$$w0rd');// echoes b7463760284fd06773ac2a48e29b0acf echo md5("p@$$w0rd");// echoes e22bb24ca616331cb92a48b712034bc3 

Cuando utiliza comillas dobles, $w0rd se considera como una variable indefinida y se reemplaza con una cadena vacía.

 echo md5("p@$");// echoes e22bb24ca616331cb92a48b712034bc3 

Si está utilizando el mismo método para hash ambas entradas, entonces lo más probable es que obtenga algunos espacios en blanco o algunos caracteres escapados dentro de uno de ellos, asegúrese de que las entradas sean EXACTAMENTE iguales antes de mezclarlas.

También puede simplemente eliminar la llamada md5 para prueba y ver si las contraseñas de texto plano coinciden, apuesto que no. Puede ser solo su SQL que devuelve la fila incorrecta …