0

我为用户创建了一种表格来更改编程的密码,如下所示-

include("../database.php");
if(isset($_SESSION['user_name']))
{
    $password=$_POST['new_password'];
    $query="select password from login where  username = '".$_SESSION['user_name']."' and password='".md5($password)."'";
    echo $query."<br>\n";
    $result=mysql_query($query) or die(mysql_error());
    echo $result."<br>\n";
    echo "abc<br>\n";
    echo mysql_num_rows($result)."<br>\n";
    if(mysql_num_rows($result))
    {   
        echo "def";
        $row=mysql_fetch_row($result);
        $pass=$row['password'];
        echo $pass;
        if($pass==$password)
        {
            $query2="UPDATE login SET password='$password' WHERE username='$_SESSION[user_name]'";
            echo $query2;
            echo "Password changed successfully";
        }
        else
        {
            echo "You entered wrong current password";
        }
    }
    else
    {
        echo "here";
    }
}
else
{
    header('Location:index.php');
}

它给出了 $result=0。所以它不会更新用户密码。它直接转到其他部分并按书面形式给出“此处”的输出。什么是解决方案。

4

3 回答 3

1

您正在使用一个变量 - 密码 - 用于两件事:旧密码,它与用户 ID 一起保存为数据库中的 MD5 哈希值,以及新密码,它从用户传递到您的例程中。

使它们成为两个不同的变量。第一个查询应该从数据库中密码的 MD5 设置“old_password”。您可以使用它来确认用户知道旧密码。

如果一切顺利,则将新密码保存在数据库中。

于 2013-10-29T12:42:52.407 回答
0

您正在尝试通过新密码的哈希来获取用户

$password=$_POST['new_password'];
$query="select password from login where  username = '".$_SESSION['user_name']."' and password='".md5($password)."'"

如果您的表单包含 old_password 输入,您应该分配:

$password=md5($_POST['old_password']);
$query="select password from login where  username = '".$_SESSION['user_name']."' and password='".$password."'";

并将更新查询更改为:

$newPassword=md5($_POST['new_password']);
$query2="UPDATE login SET password='$newPassword' WHERE username='$_SESSION[user_name]'";
于 2013-10-29T12:44:16.530 回答
0

您正在使用 new_password 而不是密码字段来查找现有用户。

我想应该是这样的(假设您的用户还在“密码”字段中提供了旧密码):

$password=$_POST['password'];
    $query="select password from login where  username = '".$_SESSION['user_name']."' and password='".md5($password)."'";

如果不是这种情况,那么您至少应该为旧密码添加一个字段并使用该字段在数据库中查找用户。

于 2013-10-29T12:42:15.353 回答