更改密码PHP / Ajax / JQuery

时间:2013-10-19 20:52:43

标签: php jquery mysql ajax

我正在尝试创建一个用于更改用户密码的表单。控制台中没有生成错误,但没有更新任何内容。验证方面也在工作,所以它必须归结为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 个答案:

答案 0 :(得分:1)

最终想出来。

我需要添加event.preventDefault();以阻止普通表单提交。

答案 1 :(得分:1)

由于您是通过Ajax请求将表单数据发送到服务器,因此您不需要首先提交提交类型的输入,因为这将尝试在单击时提交表单,您将不得不编写其他代码来停止该提交按钮的默认功能。因此,请使用简单的html按钮或链接替换该提交按钮。

答案 2 :(得分:0)

将ajax中的数据更改为

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

因为您没有将数据发送到服务器和未声明的信息变量

答案 3 :(得分:0)

确保将所有必需的data传递给PHP服务器。现在,从我所看到的,你传递的是一个空变量。

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数据库是一个非常糟糕的想法(相信我,我犯了同样的错误)。

此外,您应该要求用户在更改当前密码时输入旧密码(如果他们将网站放在计算机上,该怎么办)。