1

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

在 .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"}
    }

有人看到我的错误吗?我试图从几天开始解决这个问题..

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

谢谢

4

4 回答 4

2

在你的表格上试试这个:

 <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";}
    }
    ?>
于 2013-06-23T21:00:28.417 回答
1
if ($_POST['oldpw']==md5($pawo))

应该

if (md5($_POST['oldpw']) == $pawo)
于 2013-06-23T20:59:43.013 回答
0

问题的另一种解决方案

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

       }

   }
    ?>
于 2014-01-30T15:38:17.880 回答
0

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

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

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

于 2013-06-23T20:58:47.067 回答