我正在编写一个简单的脚本,允许用户在数据库中创建帐户和更改密码。我遇到的唯一问题是创建一个允许用户更改密码的脚本。它不会在我的数据库中更新。我收到成功的消息,但它没有在数据库中更新。请帮助我任何建议,将不胜感激如果需要更多详细信息,请告诉我?
<form method="POST">
old:<input type="text" name="old_pass">
new:<input type="text" name="">
conf:<input type="text" name="">
<input type="submit" name="submit" value="save">
</form>
<?php
$conn_db = mysqli_connect("localhost","root","","oz");
if(!$conn_db)
{
echo "not connect";
}
echo "connect".mysqli_error($conn_db);
SESSION_START();
if($_SERVER['REQUEST_METHOD']=="POST")
{
if(isset($_POST['submit']))
{
$old_pass=$_POST['old_pass'];
$new_pass=$_POST['new_pass'];
$re_pass=$_POST['re_pass'];
$chg_pwd=mysqli_query($conn_db,"SELECT * FROM admin WHERE email='$email'");
$chg_pwd1=mysqli_fetch_array($chg_pwd);
$data_pwd=$chg_pwd1['pass'];
if($data_pwd==$old_pass){
if($new_pass==$re_pass){
$update_pwd=mysqli_query($conn_db,"UPDATE admin SET pass='$new_pass' where email='$email'");
echo "<script>alert('Update Sucessfully'); window.location='index.php'</script>";
}
else{
echo "<script>alert(`Your new and Retype Password is not match`); window.location='index.php'</script>";
}
}
else
{
echo "<script>alert(`Your old password is wrong`); window.location='change.php'</script>";
}}
}
?>
最佳答案
您收到成功消息是因为您实际上并未检查更新是否成功。您只是在检查密码是否匹配:
if($new_pass==$re_pass)
您永远不会定义
$email
,因此您的 WHERE 子句会生成一个空数据集。
尝试定义 $email
,例如:$email = $_POST['email']
并在检查结果的 if 语句中移动警报和重定向查询的
if(mysqli_query($conn_db,"UPDATE admin SET pass='$new_pass' where email='$email'")) {
echo "<script>alert('Update Sucessfully'); window.location='index.php'</script>";
}
注意:
- 您不应以纯文本形式存储密码。
- 在查询中运行输入之前,您应该安全地转换所有输入,以防止 SQL 注入(inject)。
关于php - 登录和密码更改 PHP 和 MYsql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46627045/