【问题标题】:php check current password errorphp检查当前密码错误
【发布时间】:2012-05-25 19:46:21
【问题描述】:

由于某种原因,此代码未使用数据库检查当前密码,但它确实正确更改了密码。它还能够连接到我的数据库。它还可以检查新密码是否与确认新密码相同。这是正在运行的 php,这可能有什么问题:

<?php if(!defined('INCLUDE_CHECK')) header("Location: index.php"); ?>

<?php

/* irrelevant parts omitted */

if($_POST['submit']=='Change Password')
{
    // Checking whether the Change Password form has been submitted

    $err = array();
    // Will hold our errors


    if(!$_POST['password'] || !$_POST['newpassword'] || !$_POST['confirmpassword'])
        $err[] = 'All the fields must be filled in!';

    if(!count($err))
    {

        if($_POST['password'] != /* something should be here but i don't know what */)
            $err[] = 'Current password is incorrect!';

        if($_POST['newpassword'] != $_POST['confirmpassword'])
            $err[] = 'New passwords do not match!';

        if(!count($err))
        {           

            $pass = $_POST['confirmpassword'];

            mysql_query(
                            "UPDATE members 
                            SET pass='".md5($pass)."' 
                            WHERE id='{$_SESSION['id']}'"
                        );

            $_SESSION['msg']['change-password-success']='Success your password has been changed!';

        }       
    }

    if($err)
    $_SESSION['msg']['change-password-err'] = implode('<br />',$err);
    // Save the error messages in the session

    header("Location: change-password.php");
    exit;
}
?>

【问题讨论】:

    标签: php mysql html css database


    【解决方案1】:

    由于某种原因,这段代码没有检查数据库的当前密码,但它确实正确地更改了密码。

    ...这实际上是您的代码吗?还是您的问题措辞不当?

    if($_POST['password'] != /* something should be here but i don't know what */)
    

    因为不检查密码是有原因的...

    还有:

    它还可以连接到我的数据库并检查新密码是否与确认新密码相同。

    不,它不是——它只是根据用户键入的其他字段检查密码——它没有对数据库进行任何检查:

    if($_POST['newpassword'] != $_POST['confirmpassword'])
            $err[] = 'New passwords do not match!';
    

    【讨论】:

    • 我以前有一些东西,但我在尝试修复它时删除了它。
    • 你能把它放回去吗?您目前没有数据库代码向我们展示您是如何尝试检查数据库中的用户密码的?
    • 很久以前我不记得我在那里有什么了。我不知道我需要放什么来从数据库中检查 md5 密码。
    • 当我说“连接到数据库和...”时,我的意思是它们是两个独立的东西
    • 好吧 - 创建用户时,您的 md5 哈希算法在哪里?您基本上只需使用相同的逻辑,并创建密码的 md5 表示,然后执行简单的 mySQL 查找以检查值是否相同
    【解决方案2】:

    据我所知,您的脚本中没有任何地方可以调用数据库来检查现有记录...

    $query = mysql_query("SELECT * FROM members WHERE id='{$_SESSION['id']}'");
    $data = mysql_fetch_assoc($query);
    if($data['pass'] == md5($_POST['confirmpassword'])){
    echo "Old and new password matches";
    }
    

    【讨论】:

    • 我的意思是我需要用数据库上的md5密码检查当前密码。
    • 那里发布的代码应该验证密码是否匹配
    猜你喜欢
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多