位置:标头重定向错误

时间:2017-07-17 20:06:54

标签: php

这是我要做的最后一件事,我将正式创建我的第一个PHP注册/登录系统。

我所拥有的是一个名为checksession.php的文件。此文件检查用户是否已登录/是否已创建会话。如果用户这样做,则应该让他们查看他们的帐户页面。如果不是,它应该将它们发送到index.php。

就目前而言,即使在成功登录后,它也会将用户发送回index.php。我不确定我在这个脚本中做错了什么。

checksession.php

<?php

include('includes/db.php');

session_start();

$userSession = $_SESSION['username'];
$sql = mysqli_query($db, "SELECT emailAddress FROM users WHERE emailAddress='$username' ");
$row=mysqli_fetch_array($sql,MYSQLI_ASSOC);
$login_user=$row['emailAddress'];

if(!isset($userSession )) {
    header("Location: index.php");
}

?>

用户名是在登录登录表单login.php时引用他们填写的用户名字段。

在他们的帐户页面上,在这种情况下是account.php,我有以下内容:

<?php

include("includes/checksession.php");

?>

这应该重定向到index.php还是应该根据他们输入的用户名设置会话?我确实确定了start_session();在我的login.php页面上。

3 个答案:

答案 0 :(得分:1)

  1. 确保其session_start();在我的login.php页面上没有start_session();

  2. 尝试回显$ userSession和$ _SESSION ['username']以查看他们实际持有的内容

  3. 以这种方式尝试语句

  4. if(isset($_SESSION['username'])) {
         //do what ever
    }else{
         header("Location: index.php");
    }
    

答案 1 :(得分:0)

将始终设置Variable $ userSession,它可能为null或空字符串,但它将始终从您的代码中设置。

将支票更改为:

if(!isset($_SESSION['username'])) {
    header("Location: index.php");
}

答案 2 :(得分:0)

确定

我不知道这是否是最好的方法,因为我认为我可能会使这个问题变得复杂但是我们走了:

我接受了check.php代码并将其放入我的登录代码中以设置SESSION。

正下方我有以下代码:

if(mysqli_num_rows($result) == 1) {
            $_SESSION['username'] = $login_user; // Initializing Session
            header("location: account.php"); // Redirecting To Other Page
        } else {...

登录并瞧。我被带到我的account.php,就像我期望的那样。如果我退出然后尝试查看account.php,我会被反弹回index.php。