【问题标题】:PHP: change passwordPHP:更改密码
【发布时间】:2013-06-23 20:55:11
【问题描述】:

我正在为我的网站实现密码更改功能。不幸的是,它不起作用。

在 .html 文件中我得到了代码:

 <form method='post' >
                    <td>Old Password:</td>                  
                    <td><input name='oldpw' type='password' required='required'/></td>
                <tr>
                    <td>New Password:</td>
                    <td><input name='newpw' type='password' required = 'required' /></td>
                <tr>                    
                    <td>Confirm Password:</td>                  
                    <td><input name='conpw' type='password' required = 'required' /></td>
                    <td> 
                    <input type='submit' value='Change Password' />
                    </td>
                </tr>           
                 </form>

在 account.php 文件中我写了这个:

if (isset($_POST['newpw'])){

    $pw=$dbc->query("select passwort from kundenaccount where accname= '" . $_SESSION['accname'] . "';")
                $row = $pw->fetch_object()
                $pawo = $row->passwort 

        if (md5($_POST['oldpw']) == $pawo){
        if ($_POST['newpw']==$_POST['conpw']){
         $dbc->query("UPDATE accname SET passwort='" . md5($_POST['newpw']) . "' WHERE accname='" . $_SESSION['accname'] . "';")
         }
        else { echo "Passwords do not match" }
        }
    else { echo "Wrong password entered"}
    }

有人看到我的错误吗?几天以来我一直在尝试解决这个问题..

希望任何人都可以提供帮助。

谢谢

【问题讨论】:

  • 不要以纯文本或 md5 格式存储密码。你也可以尝试删除你在任何地方不应该使用的@。你应该处理错误,而不是压制它们。
  • 您的表单没有操作
  • 第一步,STOP 使用@ 抑制错误。如果代码不起作用,那么不要做相当于把手指塞进耳朵里然后“啦啦啦啦”的做法。
  • @user2067005:没有必要。如果未指定任何操作,则表单将提交到加载表单的 url。
  • @Marc B 表单不在同一页面上。那么他的 .html 是如何知道准确发送到 account.php 文件的,请告诉我

标签: php change-password


【解决方案1】:

在您的表单上试试这个:

 <form method='post' action='account.php'>

更新:

我完成并为我的数据库制作了脚本,工作正常。在需要时更改值:

<?php
$dbc = new mysqli("localhost", "db-user", "db-pass", "db-name");
if (isset($_POST['newpw'])){
    $pw=@$dbc->query("select passwort from kundenaccount where accname= '" . $_SESSION["accname"] . "'");
                $row = $pw->fetch_object();
                $pawo = $row->password ; 

    if (md5($_POST['oldpw'])== $pawo){

        if ($_POST['newpw']==$_POST['conpw']){
         @$dbc->query("UPDATE kundenaccount SET passwort='" . md5($_POST['newpw']) . "' WHERE accname='" . $_SESSION['accname'] . "'");
         }
        else { echo "Passwords do not match"; }
        }

    else { echo "Wrong password entered";}
    }
    ?>

【讨论】:

    【解决方案2】:
    if ($_POST['oldpw']==md5($pawo))
    

    应该是

    if (md5($_POST['oldpw']) == $pawo)
    

    【讨论】:

      【解决方案3】:

      md5 是一种单向哈希,因此您无法撤消它,您应该比较另一种方式。

      if (md5($_POST['oldpw'])==$pawo){
      

      注意:MD5 不被认为是安全的,我会升级到其他算法..

      【讨论】:

        【解决方案4】:

        问题的另一种解决方案

         <?php
        
         include ('connect_db.php');
         if(isset($_POST['submit']))
             {
               $oldpw = $_POST ['oldpw'];
         $newpw = $_POST ['newpw'];
         $retypepw = $_POST ['retypepw'];
        
         $sql = mysql_query("SELECT * FROM users WHERE password = '$oldpw'") or die (mysql_error());
           if ($sql)
        
           {
               $row = mysql_fetch_array($sql);
               extract ($row);
        
               if ($oldpw <> $password) {
                   echo "Passwords dont match";}
        
                   else
        
               if ($newpw == $retypepw){
                $update = mysql_query("UPDATE users SET  password = '$newpw' WHERE password = '$oldpw' ") or die (mysql_error());
                    if($update)
        
            {
        
                echo "Successfully changed password"; }
                }
        
            else { echo "Password dont match";}
        
               }
        
           }
            ?>
        

        【讨论】:

          猜你喜欢
          • 2011-06-29
          • 2018-11-15
          • 1970-01-01
          • 1970-01-01
          • 2016-08-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-03-19
          相关资源
          最近更新 更多