繁体   English   中英

PHP登录不起作用

[英]PHP Login does not work

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

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>

来自(我的)评论:

“我的猜测是,并且以前经常发生这种情况,就是密码列的长度不够长。如果是这种情况,那么默默地失败了,这就是我之前所说的。”是小于60的值,那么您将需要重新开始,删除旧的哈希值,将该列更改为60+(最好是255)并创建一组新的哈希值。我已经回答了很多这样的问题,因此... –弗雷德-ii-

和OP:

@ Fred-ii-您说得对,并且现在正在工作! 非常感谢! 难怪这已经困扰了我好几个小时了。 – Krillex“

将session_write_close()放在标题更改行的前面。

session_write_close();
header("Location: main.php");
exit;

注释:“按下登录按钮后,我再也不会重定向到main.php。什么都没有发生。”

更改标头后添加退出,以确保重定向不会中断(例如,某些回声)。

请确保您已在调用会话之前启动了会话,否则请将此session_start(); 致电$ _SESSION []之前

然后, UPDATE 1打印$_POST并在对数据进行哈希处理后将其与$results进行比较,并手动验证是否匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM