PHP登录不起作用

PHP登录不起作用,php,mysql,login,Php,Mysql,Login,我有一个简单的登录系统,它不会工作,我不知道为什么。一旦我按下登录按钮,什么也没发生,网站只是重新加载,而不是重定向我或给我任何错误消息 if(!empty($_POST['email']) && !empty($_POST['password'])){ $records = $conn->prepare('SELECT email, password FROM Profiles WHERE email = :email'); $records ->

我有一个简单的登录系统,它不会工作,我不知道为什么。一旦我按下登录按钮,什么也没发生,网站只是重新加载,而不是重定向我或给我任何错误消息

if(!empty($_POST['email']) && !empty($_POST['password'])){

    $records = $conn->prepare('SELECT email, password FROM Profiles WHERE email = :email');
    $records ->bindParam(':email', $_POST['email']);
    $records->execute();
    $results = $records->fetch(PDO::FETCH_ASSOC);

    $message = '';

    if(count($results) > 0 && password_verify($_POST['password'], $results['password'])){

        $_SESSION['user_email'] = $results['email'];
        header("Location: main.php");
    }else{
        $message = 'Sorry, those credentials do not match';
    }
}
这是HTML表单

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST">
    <input type="text" placeholder="Email" name="email"> <br/> <br/>
    <input type="password" placeholder="Password" name="password"> <br/> <br/>
    <input type="submit" value="Login">
</form>
将会话写入关闭()放在标题更改的行之前

session_write_close();
header("Location: main.php");
exit;
评论“在我按下登录按钮后,我再也不会被重定向到main.php了。什么也没发生。”

在标题更改后添加exit,以确保没有任何东西中断(例如一些回音)重定向。

将会话写入关闭()放在标题更改前

session_write_close();
header("Location: main.php");
exit;
评论“在我按下登录按钮后,我再也不会被重定向到main.php了。什么也没发生。”


在更改标头后添加exit,以确保没有中断重定向(例如,一些回音)。

请确保在调用会话之前已启动会话,否则请将其放入
session_start()呼叫前$\u会话[]

更新1
然后打印
$\u POST
并在散列后将数据与
$results
进行比较,并手动验证是否匹配。

请确保在调用会话之前已启动会话,否则请将其放入
session_start()呼叫前$\u会话[]

更新1 然后打印
$\u POST
并在散列后将数据与
$results
进行比较,并手动验证是否匹配。

来自(我的)评论:

“我的猜测是,这以前经常发生,密码列的长度不够长。如果是这样的话,那么它会自动失败,这就是我之前所说的,也是与此相关的。如果该列小于60,则需要重新开始,删除旧哈希,将该列更改为60+(255更好)并创建一组新的散列。我已经回答了很多这样的问题,正因为如此…-弗雷德-ii-

和OP:

@弗雷德二世-你是对的,它现在正在工作!非常感谢你!难怪这困扰了我好几个小时。–克里克斯“

根据(我的)评论:

“我的猜测是,这以前经常发生,密码列的长度不够长。如果是这样的话,那么它会自动失败,这就是我之前所说的,也是与此相关的。如果该列小于60,则需要重新开始,删除旧哈希,将该列更改为60+(255更好)并创建一组新的散列。我已经回答了很多这样的问题,正因为如此…-弗雷德-ii-

和OP:

@弗雷德二世-你是对的,它现在正在工作!非常感谢你!难怪这困扰了我好几个小时。–克里克斯“


发生了什么错误?@NineBerry我没有收到任何错误消息,我只是在按下登录按钮后再也没有被重定向到main.php。什么都没有发生。所以,按下登录按钮后您仍然可以看到表单?如何打开登录表单?或者按下按钮后可以看到一个空白页面?@NineBerry我仍然可以看到登录按钮后的表单wards,我按下login按钮后仍然在同一页。登录表单只是在一个非常简单的文档中。表单不在login.php中,而是在一个单独的html文件中?有什么错误?@NineBerry我没有收到任何错误消息,只是在按下login按钮后,我再也不会被重定向到main.php。没有任何错误g发生了。那么,你在按下登录按钮后仍然可以看到表单?你如何打开登录表单?或者在按下按钮后可以看到一个空页面?@NineBerry我之后仍然可以看到表单,在按下登录按钮后我仍然在同一页面。登录表单只是在一个非常简单的文档主体中。表单不是我nside login.php,但在一个单独的html文件中?我在login.php的开头使用了session_start(),并且在我的大多数文件中都是这样做的。我在login.php的开头使用了session_start(),并且在我的大多数文件中都是这样做的。