会话已经开始 - 忽略session_start()Xampp

时间:2015-01-12 15:19:05

标签: php

<?php
if($_SESSION['IS_LOGEDIN'] == 'Y')
{
header("location:index.php?page=home");
exit();
}
?>

我有问题的人,我有这个登录代码和这个错误,当我想进入该页面。

  

会话已经开始 - 忽略session_start()。

我尝试以这种方式制作代码但是当我想要进入页面时,不想加载:

<?php
   if(!isset($_SESSION['IS_LOGEDIN']) == 'Y')
    { 
        session_start(); 
 header("location:index.php?page=home");
    exit();
    } 
?>

解决方案是什么?

2 个答案:

答案 0 :(得分:2)

你的代码错了:

if(!isset($_SESSION['IS_LOGEDIN']) == 'Y')
   session_start()

您开始会话 AFTER 您尝试测试会话中的值(可能)。同样,isset()返回布尔值true / false。它永远不会返回一个字符串,它将 NOT 返回您正在测试的变量中可能设置的值。所以基本上你已经if (true/false == 'Y')没有任何意义。

你可能想要更像这样的东西:

session_start()
if (!isset($_SESSION['IS_LOGEDIN']) || ($_SESSION['IS_LOGEDIN'] != 'Y')) {
    header('....');
}

&#34;如果用户从未登录或未登录,则重定向&#34;。

答案 1 :(得分:0)

你可以尝试

    <?php
session_start(); //must be at the start of the page
        if(!isset($_SESSION['IS_LOGEDIN']) or empty($_SESSION['IS_LOGEDIN'])) {
        $_SESSION['IS_LOGEDIN'] = 'Y';
        header("location:index.php?page=home");
    exit();
        }
    ?>