php - 登录和密码更改 PHP 和 MYsql

标签 php mysql mysqli authentication passwords

我正在编写一个简单的脚本,允许用户在数据库中创建帐户和更改密码。我遇到的唯一问题是创建一个允许用户更改密码的脚本。它不会在我的数据库中更新。我收到成功的消息,但它没有在数据库中更新。请帮助我任何建议,将不胜感激如果需要更多详细信息,请告诉我?

            <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>";
                }}
            }
              ?>

最佳答案

  1. 您收到成功消息是因为您实际上并未检查更新是否成功。您只是在检查密码是否匹配:if($new_pass==$re_pass)

  2. 您永远不会定义 $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>";
}

注意:

  1. 您不应以纯文本形式存储密码。
  2. 在查询中运行输入之前,您应该安全地转换所有输入,以防止 SQL 注入(inject)。

关于php - 登录和密码更改 PHP 和 MYsql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46627045/

相关文章:

php - 如何使用php从mysql数据库中选择相似的记录?

php - 没有选择数据库 PHP

PHP:从 SQL 值到 html 内容

php - 在 PHP 中建立 SEO URL 系统的好方法是什么?

php - 如何检查目录中的音频文件与数据库中存储的文件名是否匹配

php - codeIgniter 闭包表模型

php - 使用 php、sql、html/css 突出显示和平均/总销售额

php - Symfony2 - 为服务指定的类型名称不匹配

php - 为什么使用 number_format() 会改变我的数值?

c# - 从 c sharp 客户端应用程序上传到 PHP 服务器