PHP登录不起作用

时间:2017-03-12 21:55:14

标签: php mysql login

我有一个简单的登录系统无法使用,我无法弄清楚原因。一旦我按下登录按钮没有任何反应,该网站只是重新加载而不是重定向我或给我任何错误消息。

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>

3 个答案:

答案 0 :(得分:3)

来自(我的)评论:

  

“我的猜测是以前经常发生这种情况,密码列的长度是不够长的。如果是这样的话,那就是默默地失败,这就是我之前所说的并且是关于如果列少于60,那么你将需要重新开始,删除旧的哈希值,将列更改为60+(255更好)并创建一组新的哈希值。我已经回答了相当的问题。像这样的一些问题,因为这一点...... - Fred -ii-“

和OP:

  

@ Fred-ii-你是对的,它现在正在运作!非常感谢!难怪这已经困扰了我几个小时。 - Krillex“

答案 1 :(得分:1)

将session_write_close()放在带有标题更改的行之前。

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

评论“在我按下登录按钮后,我再也没有被重定向到main.php。根本没有任何事情发生。”。

在标题更改后添加退出以确保没有任何中断(例如某些回显)重定向。

答案 2 :(得分:0)

请确保您在调用之前已启动会话,否则请将其放入 调用$ _SESSION []

之前session_start();

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