使用MD5值更新MySQL数据库

时间:2012-07-24 11:39:30

标签: php mysql passwords md5

通过我的代码彻底搜索后,我可以确定此错误的唯一原因是我用于将字符串转换为MD5的技术无效。但是我找不到另一种方法。

$username = $_POST['username'];
$password = $_POST['password'];
$repassword = $_POST['repassword'];
if( $password=$repassword ) {
    $con=mysql_connect("localhost", "root", "");

    if( $con == true ) {
        mysql_select_db("movedb", $con);
        //$newpassword = mysql_real_escape_string(md5($_POST['password']));
        $query = "UPDATE user SET password=MD5('$password') WHERE username='$username'";
        // $query = "UPDATE user SET password='$newpassword' WHERE username='$username'";
        $result = mysql_query($query, $con);

        if( $result == true ) { 
            echo "Successfully saved your message";
        } else {
            echo mysql_error();
        }   

        mysql_close($con);
    } else {
            echo "Cannot connect to the database";
    }

} else {
    echo "Passwords do not match!";
}

有关如何从PHP更新此MD5值的任何想法

4 个答案:

答案 0 :(得分:1)

$password = md5($password);
$query = "UPDATE user SET password='".$password."' WHERE username='".$username."'";

使用PHP支持的md5哈希。

答案 1 :(得分:1)

检查密码:

SELECT * FROM 'user' WHERE username='bob.jhonny' AND pass=MD5('oldPassword');

更新:

UPDATE 'dlp_contatcs'.'user' SET 'Pass'=MD5('NewPassword') WHERE 'Username'='bob.jhonny';

答案 2 :(得分:1)

可能导致问题的一个问题是MySQL和PHP在加密时使用不同的默认盐。这意味着生成的字符串将不同。所以你必须使用PHP MySQL来加密,并且不是 2的混合物。

其次,MD5已被其他更好的加密算法取代。您可以考虑使用其中一个来提高安全性。查看PHP的crypt()函数。

答案 3 :(得分:0)

  

警告:

     

请不要使用mysql_*函数来编写新代码。它们已不再维护,社区已开始deprecation process。请参阅red box

     

相反,您应该了解prepared statements并使用PDOMySQLiThis article应该提供有关决定使用哪个API的一些详细信息。对于PDO,这里是good tutorial

您可以使用PHP计算md5()哈希并将其存储到变量中,然后将该变量放入数据库中。检查数据库时,请确保执行相同的转换(PHP代码正文中为md5

您应该修改第if( $password=$repassword )行。您需要两个或三个=符号才能对某些内容进行if检查。正确的行是if( $password === $repassword )

// ...
$newpassword = md5($_POST['password']);
$result = mysql_query('UPDATE user SET password="' .mysql_real_escape_string($newpassword). '" WHERE username = "' .mysql_real_escape_string($username). '"', $con);

if ( $result === TRUE )
{
    echo "Successfully saved your message.";
// ...