[英]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.