-5

コードを徹底的に検索した結果、このエラーについて特定できた唯一の理由は、文字列を 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!";
}

この MD5 値を PHP から更新する方法についてのアイデア

4

4 に答える 4

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

PHP がサポートする md5 ハッシュを使用します。

于 2012-07-24T11:41:13.997 に答える
1

パスワードを確認するには:

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

更新するには:

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

于 2012-07-24T11:42:41.050 に答える
1

問題を引き起こす可能性のある問題は、MySQL と PHP が暗号化するときに異なるデフォルトのソルトを使用することです。これは、結果の文字列が異なることを意味します。そのため、暗号化には PHPまたはMySQLのいずれかを使用する必要があり、2 つの混合ではありません。

次に、MD5 は他のより優れた暗号化アルゴリズムに取って代わられました。セキュリティを向上させるために、それらのいずれかを使用することを検討してください。PHPのcrypt()機能を調べてください。

于 2012-07-24T11:47:27.490 に答える
0

警告:

mysql_*関数を使用して新しいコードを記述しないでください。それらはもはや保守されておらず、コミュニティは非推奨プロセスを開始しています。赤いボックスが見えますか?

代わりに、準備済みステートメントについて学び、 PDOまたはMySQLiのいずれかを使用する必要があります。この記事では、使用する API を決定する方法について詳しく説明します。PDO については、ここに良いチュートリアルがあります。

PHP でハッシュを計算md5()して変数に格納し、その変数をデータベースに入れることができます。md5データベースに対してチェックするときは、(PHP コード本体で) 同じ変換を行うようにしてください。

行を修正する必要がありますif( $password=$repassword )。何かをチェックするには、 2 つまたは 3 つの=兆候が必要です。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.";
// ...
于 2012-07-24T11:46:39.380 に答える