1

ユーザーのパスワードを変更するためのフォームを作成しようとしています。コンソールでエラーは生成されていませんが、何も更新されていません。バリデーション側も動いているのでAjaxの部分まで?

免責事項: PHP で mysql を使用するべきではないことはわかっていますが、基本を理解しようとしており、後日 mysqli を学習します :) また、config.php は他の複数の関数で使用されるため、config を知っています。 php 大丈夫です。

何がうまくいかないのですか?

HTML:

            <fieldset>
                <form method="post" name="password-form" id="form-password">
                <label>Password:</label> <br>
                <input type="password" name="password" id="password" value="" size="32" />
                <br>
                <br>
                <label>Re-Enter Password:</label> <br>
                <input type="password" name="password-check" id="password-check" value="" size="32" />
                <br>
                <br>
                <input type="submit" value="Submit" id="passsubmit">
                </form>
            </fieldset>   

JQuery:

$(function(){
        $("#passsubmit").click(function(){
        $(".error").hide();
        var hasError = false;
        var newpass = $("#password").val();
        var checkVal = $("#password-check").val();
        if (newpass == '') {
            $("#password").after('<span class="error">Please enter a password.</span>');
            hasError = true;
        } else if (checkVal == '') {
            $("#password-check").after('<span class="error">Please re-enter your password.</span>');
            hasError = true;
        } else if (newpass != checkVal ) {
            $("#password-check").after('<span class="error">Passwords do not match.</span>');
            hasError = true;
        }

        if(hasError == true) {return false;}

        if(hasError == false) {
                $.ajax({
                type: "POST",
                url: "resource/changepassword.php",
                data: {newpass:newpass},
                success: function(){}
                });
        };
    });
});

PHP:

<?php
session_start();
include('config.php');
$user_check=$_SESSION['login_user'];

$newpass=$_POST['newpass'];
$sql_rec = "select UserID from useradmin where username='$user_check' ";
$rs_rec = mysql_query($sql_rec);
$data_rec = mysql_fetch_object($rs_rec);

$userID = $data_rec->UserID; 



$updatesql="UPDATE useradmin SET passcode='$newpass' WHERE UserID=$userID";

mysql_query($updatesql, $bd) or die(mysql_error());


?>

$bd は、config.php からの私の MySQL 接続の詳細です。

アップデート:

ページに追加<div id="passsubmit2">123</div>し、jquery を次のように変更しました。

$(function(){
        $("#passsubmit2").click(function(){

そして、それは完全に機能するので、機能しないのはフォームボタンを使用するときだけですか?

4

4 に答える 4

1

最終的にそれを理解しました。

event.preventDefault();通常のフォーム送信が起動しないように追加する必要がありました。

于 2013-10-20T16:19:35.063 に答える
0

必要なものをすべてdataPHP サーバーに渡すようにしてください。現在、私が見る限り、空の変数を渡しています。

info={
newpass : newpass,
checkVal: checkVal
};

$.ajax({
                type: "POST",
                url: "resource/changepassword.php",
                data: info,
                success: function(response){
                  console.log(response);
                }
      });

PHP 側:

<?php
$newPassword=$_POST['newpass '];

編集:これをさらに進めると、ユーザー名ではなくユーザー ID (一意の数値 ID) をセッションに保存する必要があります。ユーザー名を一意の値として使用してmysql DB全体を参照することは、非常に悪い考えです(私を信じてください、私は同じ間違いをしました)。

また、現在のパスワードを変更するたびに、ユーザーに古いパスワードを入力するように要求する必要があります (ユーザーがコンピューターに Web サイトを残した場合)。

于 2013-10-19T21:07:02.880 に答える
0

ajax内のデータを次のように変更します

if(hasError == false) {
                $.ajax({
                type: "POST",
                url: "resource/changepassword.php",
                data: {
                    newpass : newpass,
                },
                success: function(){}
                });
  };

データがサーバーに送信されず、情報変数が宣言されていないため

于 2013-10-19T20:55:57.937 に答える