PHP:基于会话的登录脚本赢得';行不通

PHP:基于会话的登录脚本赢得';行不通,php,login,passwords,md5,Php,Login,Passwords,Md5,我得到了一个简单的登录脚本,可以发布密码并检查数据库的响应 session_start(); include 'core/config.php'; include 'core/db.php'; $checkPWD = $DB_CON -> query('SELECT * FROM users'); $checkPWD->execute(); $pwd = $checkPWD->fetchAll(); if($_POST['password']) { $md5pwd =

我得到了一个简单的登录脚本,可以发布密码并检查数据库的响应

session_start();
include 'core/config.php';
include 'core/db.php';
$checkPWD = $DB_CON -> query('SELECT * FROM users');
$checkPWD->execute();
$pwd = $checkPWD->fetchAll();
if($_POST['password']) {
    $md5pwd = md5($_POST['password']);
    if($md5pwd == $pwd[2]) {
         $_SESSION['login'] = 'true';
         $_GET['page'] = 'dashboard';
    } else {
        $_GET['error'] = 'true';
    }
}
此退出并将$\u GET['error']设置为true。 密码存储在数据库的md5中


非常感谢

您应该在查询中这样做:

$md5pwd = md5($_POST['password']);

$checkPWD = $DB_CON->query("SELECT * FROM users WHERE password = '{$md5pwd}' LIMIT 1");
$pwd = $checkPWD->fetchAll();

if ($pwd) {
     // Has find someone
} else {
     // Hasn't find no one
}

错误是什么?脚本退出到else并获取$\u get['error']='true',即使密码正确。此脚本非常混乱。您正在选择整个用户表?然后输入密码(即MD5)。你的数据也没有循环@谢谢你的建议,你能提供一个有效的例子吗?编辑:脚本在本地VPS中运行,只能通过VPN连接访问,密码验证仅用于锁定空闲会话更改了代码,但结果相同,它不存储任何会话值。他选择的是整个用户表。所以如果这不符合你的第一张唱片,luckI改变了它,我以为他知道第二排是正确的,谢谢,它工作了!