【问题标题】:PHP changing password and it's not working. There is no error with the syntax I believe, but the password won't changePHP更改密码并且它不起作用。我相信语法没有错误,但密码不会改变
【发布时间】:2015-03-17 04:06:46
【问题描述】:

我正在制作一个名为 changepassword.php 的 php 文件,该文件的唯一目的是允许用户更改密码。但是,当他们通过表单更改密码时,框字段会清除,我会收到回声警告回声“密码框为空!”。这似乎不想更新用户的密码,我不知道该怎么做。我是这种语言的新手,所以不要期望太多。我将非常感谢一些建设性的意见,以帮助我更好地编写 php。

<?php
session_start(); 
#error_reporting(E_ALL); ini_set('display_errors', 1);
require_once('connect.php');
require_once "lib.php";
require_once "utils.php";

if(isset($_POST['submit']) && $_SESSION['active']===true)
{
    if(!empty($_POST['OldPassword'])&&
        !empty($_POST['NewPassword'])&&
        !empty($_POST['NewPassword1']))
    {
        $OldPassword = mysqli_real_escape_string($link,htmlentities($_POST['OldPassword']));
        $NewPassword = mysqli_real_escape_string($link,htmlentities($_POST['NewPassword']));
        $NewPassword1 = mysqli_real_escape_string($link,htmlentities($_POST['NewPassword1']));

        $EmailAdress = $_SESSION['EmailAdress'];
        $sql = "SELECT * FROM users WHERE EmailAddress='$EmailAddress'";

        if($result = mysqli_query($link, $sql))
        {
            while($row = mysqli_fetch_array($result, MYSQLI_ASSOC))
            {
                $temp1=$row['Password'];
                if($row['Password'] != $OldPassword)
                {
                    echo "<div id='change_error1'>* This Does Not Match Previous Password!<br></div>";
                }
            }

            if($NewPassword != $NewPassword1)
            {
                echo "<div id='change_error2'>* You Passwords DO NOT Match!</div>";
            }

            if($temp1 == $OldPassword && $NewPassword == $NewPassword1)
            {
                $sql = "UPDATE users SET Password='$NewPassword' WHERE EmailAddress='$EmailAddress'";
                if($result = mysqli_query($link, $sql))
                {
                    header("Location: profile.php");
                    echo "<strong>YOURE PASSWORD HAS BEEN UPDATED!</strong>";
                }
            }
        }
    }
    else
    {
        echo "<div id='change_error3'>A Password Box was Left Empty!</div>";
    }
}
?>
<html>
   <head>
      <title>Change Password</title>
   </head>
   <br></br>
   <br></br>
   <body class="body">
      <div id="wrapper">
         <div id="header">
            <br>
            <h1> PHP Learning Course </h1>
            <br>
            <?php require_once "left.php" ?>
         </div>
         <div id="change">
            <div id="change_name">
               <h3> Change Password</h3>
            </div>
            <p>
            <div id='change_form'>
               <form action='changepass.php' method='POST'>
                  Old Password:<br> <input name='OldPassword' type='password'/></br>
                  <br>
                  New Password:<br> <input name='NewPassword' type='password'/></br>
                  <br>
                  Confirm Password:<br> <input name='newpass1' type='password'/></br>
                  <br>
                  <input name='submit' type='submit' value='Change Password' />
               </form>
               </p>
            </div>
         </div>
         <!-- end main div -->
      </div>
      <!-- end wrapper div -->
   </body>
</html>

【问题讨论】:

  • 在打开 PHP 标记后立即将错误报告添加到文件顶部,例如 &lt;?php error_reporting(E_ALL); ini_set('display_errors', 1);,然后是其余代码,以查看它是否产生任何结果,以及 @987654323 @到mysqli_query()。你会看到错误。
  • 未定义变量:第 38 行的 temp1;未定义的变量:第 19 行和第 20 行的 EmailAddress。我现在卡住了。
  • 你去。现在您知道要做什么并修复它了;定义它们。下面也有人给了你答案。你可以问他们。我要去啦啦之地。
  • 你能详细说明一下在哪里吗?
  • 从第 20 行开始,向后转到第 1 行。这20行代码里面的错误。

标签: php mysqli error-handling


【解决方案1】:
 !empty($_POST['NewPassword1']))

索引应该是newpass1

!empty($_POST['newpass1']))

因为在表格中,你已经放了,

 Confirm Password:<br> <input name='newpass1' type='password'/></br>

坚持一种约定以避免这些错误。

【讨论】:

  • 大声笑,这是一个语法错误,但现在数据库中没有更新新密码。
  • 您的密码未更新,因为代码流进入了else 块。更正此问题,只要您有正确的 sql,它将被更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-12
  • 2020-04-12
  • 2015-08-06
  • 2016-12-11
  • 2018-08-04
  • 1970-01-01
  • 2017-12-20
相关资源
最近更新 更多