2015-01-12 48 views
0
<?php 
if($_SESSION['IS_LOGEDIN'] == 'Y') 
{ 
header("location:index.php?page=home"); 
exit(); 
} 
?> 

我有问题的人,我有这个登录代码和这个错误,当我想要进入该页面。会话已经开始 - 忽略session_start()Xampp

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

我试图使代码通过这种方式,但是当我想去的页面上,不希望加载:

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

有什么解决办法?

+0

你已经摧毁了会话,当他们注销? – NoLiver92

+0

如果你在包含的/必需的文件中包含'session_start();'那么可能会导致它。你应该把'session_start();'放在顶部。加上这个'if(!isset($ _ SESSION ['IS_LOGEDIN'])=='Y')'你应该使用2个条件,而不是一个。检查是否设置,'&&'如果等于。 –

回答

2

你的代码是完全错误:

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

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

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

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

“如果用户从来没有登录或没有登录,然后重定向”。

+1

正如我所说; *在这么多的单词* ;-) –

+0

或者它的反向等价物if(isset($ _ SESSION ['IS_LOGEDIN'])&&($ _SESSION ['IS_LOGEDIN'] =='Y')){// do something} else {//做一些不同的事情},这可能是OP想要实现的。尽管OP想达到什么目标还有点不清楚。他们发布了两个不同的代码块;哪一个是好的/坏的,或者两者都是人们的猜测。 *会话已经开始*通常意味着有'session_start();'的另一个副本。 –

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(); 
     } 
    ?> 
相关问题