Php 无效表格

Php 无效表格,php,html,pdo,Php,Html,Pdo,当我尝试使用真实凭据连接时,我遇到了“用户名和密码未找到”错误 登录页面PHP脚本 身体 { 字体系列:Arial、Helvetica、无衬线字体; 字体大小:14px; } 标签 { 字体大小:粗体; 宽度:100px; 字体大小:14px; } .盒子 { 边框:1px实心#006D9C; 左边距:10px; 宽度:60%; } .提交{ 边框:1px实心#006D9C; 背景色:#006D9C; 颜色:#FFFFFF; 浮动:对; 填充:2px; } 登录详细信息: 登录 用户名: 密码

当我尝试使用真实凭据连接时,我遇到了“用户名和密码未找到”错误


登录页面PHP脚本
身体
{
字体系列:Arial、Helvetica、无衬线字体;
字体大小:14px;
}
标签
{
字体大小:粗体;
宽度:100px;
字体大小:14px;
}
.盒子
{
边框:1px实心#006D9C;
左边距:10px;
宽度:60%;
}
.提交{
边框:1px实心#006D9C;
背景色:#006D9C;
颜色:#FFFFFF;
浮动:对;
填充:2px;
}
登录详细信息:
登录 用户名:

密码:


PHP


编辑:如您在评论中所述,列的长度为255。因此,它很可能是您最初存储密码的方式,并且该方法未知

  • 查阅我的脚注。
我几乎确信您的密码列长度太短,因为您的代码检查出来了,这就是为什么我决定发布我的答案,因为您没有回复评论

如果确实如此,并且密码列的长度小于60,则需要将其更改为该长度;手册中指出,60甚至255是一个不错的选择

  • 这是一个经常被忽视的问题

您需要首先删除当前哈希,更改列的长度,创建一个新的哈希,然后进行查询

参考:


脚注:

您还需要创建/存储哈希。如果只存储纯文本,那么这就是问题所在

如果您在创建密码/哈希时尝试使用了
密码\u hash()
函数,那么您的PHP版本还需要支持该函数

否则,您将需要使用兼容包


您的查询失败,可能有几个原因。尽管如此,我的蜘蛛侠意识告诉我,如果<60{problem},密码列长度就太短了。蜘蛛侠也感觉到有人在咬我的评论。等等…我很难区分它;如果是PDO连接问题或登录本身。如果是PDO连接,则尝试更改
define(“主机名”、“127.0.0.1”)
定义(“主机名”、“本地主机”)-您需要帮助,我们也需要评论中的答案。所以,不要害羞地站在这里。我不打算再站在这里了。一个神奇的答案不会出现。但话说回来;太阳开始下山了,所以我想这只是时间问题。永远不要存储纯文本密码!请使用PHP来处理密码安全性。如果您使用的PHP版本低于5.5,则可以使用
密码\u hash()
。在散列之前,请确保您在它们上安装或使用任何其他清理机制。这样做会更改密码并导致不必要的额外编码。Help@Fred ii-感谢您的评论,但问题不在于密码列的长度,因为它是255…请提供其他解决方案?@DrFlow不客气。现在,您最初是否使用
密码\u hash()
创建/存储哈希?列类型是什么?然后尝试
fetchAll()
而不是
fetch(PDO::fetch\u ASSOC)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Login Page PHP Script</title>
    <style type="text/css">
    body
    {
        font-family:Arial, Helvetica, sans-serif;
        font-size:14px;
    }
    label
    {
        font-weight:bold;
        width:100px;
        font-size:14px;
    }
    .box
    {
        border:1px solid #006D9C;
        margin-left:10px;
        width:60%;
    }
    .submit{
        border:1px solid #006D9C;
        background-color:#006D9C;
        color:#FFFFFF;
        float:right;
        padding:2px;
    }
    </style>
</head>
<body bgcolor="#FFFFFF">

    <div align="center">
        <div class="tLink"><strong>Login Detail:</strong></div><br />
        <div style="width:300px; border: solid 1px #006D9C; " align="left">
            <?php
                if(isset($errMsg)){
                    echo '<div style="color:#FF0000;text-align:center;font-size:12px;">'.$errMsg.'</div>';
                }
            ?>
            <div style="background-color:#006D9C; color:#FFFFFF; padding:3px;"><b>Login</b></div>
            <div style="margin:30px">
                <form action="" method="post">
                    <label>Username  :</label><input type="text" name="username" class="box"/><br /><br />
                    <label>Password  :</label><input type="password" name="password" class="box" /><br/><br />
                    <input type="submit" name='submit' value="Submit" class='submit'/><br />
                </form>
            </div>
        </div>
    </div>
</body>
</html>
<?php
session_start();

//DB configuration Constants
define('_HOST_NAME_', '127.0.0.1');
define('_USER_NAME_', 'root');
define('_DB_PASSWORD', '');
define('_DATABASE_NAME_', 'ads_database');

//PDO Database Connection
try {
    $databaseConnection = new PDO('mysql:host='._HOST_NAME_.';dbname='._DATABASE_NAME_, _USER_NAME_, _DB_PASSWORD);
    $databaseConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    echo 'ERROR: ' . $e->getMessage();
}

if(isset($_POST['submit'])){
    $errMsg = '';
    //username and password sent from Form
    $username = trim($_POST['username']);
    $password = trim($_POST['password']);

    if($username == '')
        $errMsg .= 'You must enter your Username<br>';

    if($password == '')
        $errMsg .= 'You must enter your Password<br>';


    if($errMsg == ''){
        $records = $databaseConnection->prepare('SELECT nom_user, pass_user FROM  user WHERE nom_user = :username');
        $records->bindParam(':username', $username);
        $records->execute();
        $results = $records->fetch(PDO::FETCH_ASSOC);
        if(count($results) > 0 && password_verify($password, $results['pass_user'])){
            $_SESSION['username'] = $results['username'];
            header('location:dashboard.php');
            exit;
        }else{
            $errMsg .= 'Username and Password are not found<br>';
        }
    }
}

?>