0

私はPHP/Jqueryにまったく慣れておらず、自分のWebサイトのパスワード更新スクリプトを実行しようとしています。これまでのところ、パスワードは更新されていますが、古いパスワードと照合するためにこれを検証する方法を考えるのに苦労しています。

また、アラートボックス(Javaアラートウィンドウなど)にエラーメッセージを表示するにはどうすればよいでしょうか。私が尋ねる理由は、古いパスワードがデータベースに存在するパスワードと一致しない場合にアラートボックスを作成する必要があるためです。

これに関する助けをいただければ幸いです。追加のコードが必要な場合は、できるだけ早く投稿します。

// *Update Profile Password* //
$("#btn-profile-update2").bind('click', function(){

       // Get info from text boxes
    /*    var profile_oldpassword = $('#txt-prof-oldp').val(); */
    var profile_newpassword = $('#txt-prof-newp').val();
    var profile_confirmpassword = $('#txt-prof-confp').val();

    new_password = $('#txt-prof-newp').val();
    old_password = $('#txt-prof-oldp').val();

    if (profile_newpassword !== profile_confirmpassword) {

        response = "Passwords entered do not match"

        alert(response);

        return;

   }

    // An array of field names to be updated
    var arr_field_names = Array();

    // Add the field name to index of array
    arr_field_names[0] = "Password";

    // An array of field values that correspond with our field names...
    var arr_field_values = Array();

    arr_field_values[0] = profile_newpassword;

    // Send to updateProfDetails function
    updatePassword(arr_field_names,arr_field_values,new_password,old_password);

    });

});

この関数に送信するもの:

function updatePassword(arr_field_names,arr_field_values,new_password,old_password) {

    // Ajax parameters...
    $.ajax({

        // Request sent from control panel, so send to cp.request.php (which is the handler)
        url: 'scripts/php/bootstrp/cp.request.php',
        type: 'GET',

        data: {

            ft: "password",
            table: "tblusers",
            oldpassword: old_password,
            newpassword: new_password,
            field_names: arr_field_names,
            field_values: arr_field_values,

            // Either pass a row id as the 'id' OR a where clause as the 'condition' never both
            id: null,
            condition: null
        },
        dataType: 'text',
        timeout: 20000,
        error: function(){
            $('#cp-div-error').html('');
            $('#cp-div-error').append('<p>There was an error updating the data, please try again later.</p>');
            $('#cp-div-error').dialog('open');
        },
        success: function(response){

            // Refresh page
           // location.reload(true);


        }
    });


}

そして最後にPHPアップデート:

public function password($tableName)
{

    $PDO = new SQL();
    $dbh = $PDO->connect(Database::$serverIP, Database::$serverPort, Database::$dbName, Database::$user, Database::$pass);

    $username = UserAccount::get_useremail();
    $password = hash('sha256',trim($_GET['newpassword']));
    $oldpassword = hash('sha256',trim($_GET['oldpassword']));


        // Does the password given match the password held?
       $this->sql = "UPDATE $tableName SET password = '$password' WHERE UserName = '$username'";

    try {
                // Query
                $stmt = $dbh->prepare($this->sql);

                $stmt->execute();

                $count = $stmt->rowCount();

                echo $count.' row(s) updated by SQL: '.$stmt->queryString;

                $stmt->closeCursor();

            }

            catch (PDOException $pe) {
                echo 'Error: ' .$pe->getMessage(). 'SQL: '.$stmt->queryString;
                die();
            }

                // Close connection
                $dbh = null;

        }
4

2 に答える 2

1

あなたはほとんどそれを手に入れました..キーはここにあります:

success: function(response) { .. }

応答を試してみてください。おそらく次のようなものです。

success: function(response) {
    if (response == "wrong password") alert ("don't guess");
    else if (response == "password changed") alert ('you got it! congrats!');
}
于 2012-05-03T09:36:11.223 に答える
0

Vytautasは良い点だと思います、私はそれをすべて読んだわけではありませんが、私はあなたに重要なヒントを与えたいだけです

$PDO->connecttry {} catch(){}を入れてください

PDO接続機能でエラーが発生した場合、パスワードを含むデータベース情報が出力されます。

于 2012-05-03T09:39:42.523 に答える