有人可以帮助我的PHP和jQuery吗?我试着用PHP,jQuery和Ajax修改我的密码。我知道这种方法有点奇怪。但我想探索更多关于Ajax和jQuery的内容。我想在不显示或键入当前密码的情况下更新我的密码。我希望我的文本框是空的,如果我输入一些东西,它会改变我的数据库表中的密码。不需要键入我的当前密码。我的问题是它没有更新我的密码。如何更新我的数据库密码?取决于登录者。
<?php
$conn = new mysqli("localhost", "root", "", "mydb");
if(isset($_POST["btnChange"])) {
$checkUser = $conn->query("SELECT * FROM tbl_user WHERE id= $_SESSION[id]");
if ($checkUser->num_rows > 0) {
$conn->query("UPDATE tbl_user SET password = '$_POST[new_password]' WHERE id= $_SESSION[id]");
echo "Update Successfully!";
}
}
?>
$(document).ready(function(){
$("#btnChange").click(function(){
$.ajax({
url:"insert.php",
method:"post",
data:{btnChange: "", new_password: $("#new_password").val(),},
success: function(data){
alert(data);
}
});
});
});
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="jquery/jquery.js"></script>
<script src="changeapasswordjs.js"></script>
<title>Change password</title>
</head>
<body>
<h1>Change password</h1>
<form id="simpleForm">
<div>
<label for="new_password">Your new_password</label>
<input type="password" name="new_password" id="new_password" />
</div>
<br>
<div>
<button id="btnChange">Change password</button>
</div>
</form>
</body>
</html>
发布于 2018-10-21 20:44:19
要访问数组,键必须放在引号中,如['key']
。此外,您还可以将{}
包装在变量周围,以将其输出到字符串中。
// First query you do
$checkUser = $conn->query("SELECT * FROM tbl_user WHERE id = '{$_SESSION['id']}'");
// Second query you do
$conn->query("UPDATE tbl_user SET password = '{$_POST['new_password']}' WHERE id = '{$_SESSION['id']}'");
您还缺少要输出的内容类型,应该将响应编码为json:
header('Content-Type: application/json');
echo json_encode("Update Successfully!");
此外,要访问超级变量$_SESSION
,必须在访问该变量之前先使用session_start()
。
此外,没有相关的问题,但有一个关键点,你的查询很容易使用SQL injection,你应该考虑turning error logging on。
发布于 2018-10-21 22:50:47
首先,我认为您的代码遗漏了一个非常重要的语句,即session_start()
语句。
其次,不能像在代码中那样调用id
会话,您必须像这样添加引号$_SESSION['id']
。
您还需要在WHERE clause
中添加引号,以便它成为如下所示的有效语句:WHERE id = '$_SESSION['id']'
。同样,您正在以错误的方式访问$_POST
数组,您必须像这样添加引号$_POST['new_password']
。
更正这些错误后,最终的代码应该如下所示:
<?php
session_start(); //Initializing session
$conn = new mysqli("localhost", "root", "", "mydb");
if(isset($_POST["btnChange"])) {
$checkUser = $conn->query("SELECT * FROM tbl_user WHERE id='".$_SESSION['id']."'");
if ($checkUser->num_rows > 0) {
$conn->query("UPDATE tbl_user SET password = '".$_POST["new_password"]."' WHERE id='".$_SESSION['id']."'");
echo "Update Successfully!";
}
}
?>
更新
请将代码复制到此处,建议使用else
语句,以防用户不存在。
<?php
session_start(); //Initializing session
$conn = new mysqli("localhost", "root", "", "mydb");
if(isset($_POST["btnChange"])) {
$checkUser = $conn->query("SELECT * FROM tbl_user WHERE id='".$_SESSION['id']."'") or die(mysqli_error($conn));
if ($checkUser->num_rows > 0) {
$conn->query("UPDATE tbl_user SET password = '".$_POST['new_password']."' WHERE id='".$_SESSION['id']."'");
echo "ID: ".$_SESSION['id'];
}
else {
echo "User doesn't exist.";
echo "<br>ID: ".$_SESSION['id'];
}
}
?>
https://stackoverflow.com/questions/52915372
复制相似问题