【问题标题】:MySQL PHP - Cannot insert/update new values to tableMySQL PHP - 无法向表中插入/更新新值
【发布时间】:2017-09-28 09:19:46
【问题描述】:

我的网站上有一个登录系统,我正在尝试创建密码重置。我的注册或登录代码没有问题,但密码更改代码不起作用。这是我尝试过的两个示例(实际代码)

<?php
    require_once("config.php");
    session_start();
    if(isset($_POST['submit'])) {

        include_once 'config.php';

        $password = mysqli_real_escape_string($con, $_POST['password']);
        $password1 = mysqli_real_escape_string($con, $_POST['uc_pass1']);
        $password2 = mysqli_real_escape_string($con, $_POST['uc_pass2']);
        $uid = $_SESSION['s_id'];

        if ($password1 != $password2 || empty($password1) || empty($password2)) {
            header("Location: ../user-conf.php?pass=notmatching");
            exit();
        } else {
            $sql = "SELECT password FROM userdb WHERE username='$uid'";
            $result = mysqli_query($con, $sql);
            $resultCheck = mysqli_num_rows($result);

            if (!$resultCheck > 0) {
                header("Location: ../user-conf.php?error");
                exit();
            } else {
                $hashedPwdCheck = password_verify($password, $_SESSION['s_pw']);
                if ($hashedPwdCheck == false) {
                    header("Location: ../user-conf.php?error");
                    exit();
                } elseif ($hashedPwdCheck == true) {
                    $hashedPwd2 = password_hash($password1, PASSWORD_DEFAULT);
                    $sql2 = "INSERT INTO userdb (password) VALUES($hashedPwd2) WHERE username=$uid";
                    mysqli_query($con, $sql2);
                    header("Location: ../user-conf.php?pass=successfull");
                    exit();
                }
            }
        }
    } else {
        header("Location: ../login.php?nologon");
    }
?>

另一个在下面。

<?php
    require_once("config.php");
    session_start();
    if(isset($_POST['submit'])) {

        include_once 'config.php';

        $password = mysqli_real_escape_string($con, $_POST['password']);
        $password1 = mysqli_real_escape_string($con, $_POST['uc_pass1']);
        $password2 = mysqli_real_escape_string($con, $_POST['uc_pass2']);
        $uid = $_SESSION['s_id'];

        if ($password1 != $password2 || empty($password1) || empty($password2)) {
            header("Location: ../user-conf.php?pass=notmatching");
            exit();
        } else {

            $hashedPwdCheck = password_verify($password, $_SESSION['s_pw']);
            if ($hashedPwdCheck == false) {
                header("Location: ../user-conf.php?error");
                exit();
            } elseif ($hashedPwdCheck == true) {
                $hashedPwd = password_hash($password1, PASSWORD_DEFAULT);
                $sql = "INSERT INTO userdb (password) VALUES($hashedPwd) WHERE username=$uid";
                mysqli_query($con, $sql);
                header("Location: ../user-conf.php?pass=successfull");
                exit();
            }
        }
    } else {
        header("Location: ../login.php?nologon");
    }
?>

我也尝试过使用 UPDATE 语法。但是,它似乎没有用新密码更改旧密码。很高兴知道我做错了什么,所以如果你知道请告诉我,我们将不胜感激! :)

【问题讨论】:

  • 它确实给了我 ("?pass=successfull") ,因为它确实正确完成了所有内容,但表的密码列没有任何变化。如果您想知道 uc_pass1 =(新通行证的输入)和 uc_pass2 =(确认通行证的输入),也在 html 代码上。一切正常等等都没有错。
  • 您要插入还是更新? "INSERT INTO userdb (password) VALUES($hashedPwd) WHERE username=$uid" 是两者的奇怪组合。
  • "很高兴知道我做错了什么" - 嗯,几乎所有事情......从通过header 的相对重定向到不使用参数化查询......你是也许是新手?您发布的代码类似于 1999 年的教程,这些任务的语言和方法不断发展,我不是要批评您,我只是想知道您的水平。有改进的空间,我真诚地希望你能进一步提高你的技能,请不要认为我的评论是侮辱或贬低,我们需要优秀的开发人员,必须有人告诉你,你可以而且应该改进。
  • 哦,一点也不!我真的从来没有接受过任何关于 html 或 php 编码的教育,实际上可能是 2 周前开始尝试的,所以每一个批评都是一个加分项!我一定会尝试改进这一点。

标签: php mysql database change-password


【解决方案1】:

99% 确定:

"INSERT INTO userdb (password) VALUES($hashedPwd2) WHERE username=$uid"

应该是:

"UPDATE userdb SET password = '$hashedPwd2' WHERE username='$uid'"

您的 PHP 变量周围缺少引号,INSERT 应该是 UPDATE

【讨论】:

  • 天哪,我发誓我第一次使用它但没有 $uid 而是在用户名上使用 $_SESSION['s_id']。你完全成功了!非常感谢您的回答! :)
  • 没问题。希望能帮助到你。顺便说一句,$uid 也应该通过mysqli_real_escape_string() 运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-25
相关资源
最近更新 更多