2010-08-25 141 views
0

我有一个Facebook登录系统,似乎工作很好,但我想,如果用户登录重定向到首页,所以这是我的页面的顶部忽略if语句

<?php 
session_start(); 

if(!empty($_SESSION)){ 
header("Location: home.php"); 
} 

但被忽略,并且它运行登录脚本,就好像$ _SESSION是空的一样,即使我在主页上打印了Session数组,并且它总是显示它具有值,并且脚本的其余部分也会分配会话值。即使我将其更改为if (empty($_SESSION))或在其后添加else { die()},它也完全忽略它。

现在,如果我使用print_r($ _ SESSION)或echo'ing特定值来添加任何内容来打印会话,即使我将它放在if语句的旁边,它似乎也意识到$ _SESSION有一个价值并做重定向。我可以把它永久放在那里,因为它永远不会出现......但我宁愿弄清楚它为什么现在不工作。

+0

你缺少一个括号。这是问题吗? – 2010-08-25 07:06:27

+0

@Merlyn Morgan-Graham,它在解释中被正确引用,如果他错过了代码中的括号,它应该抛出一个解析错误。我假设这是一个错字,并修复它。 – 2010-08-25 07:14:06

回答

3

如果不中断脚本会,很好,跑,直到最后:

<?php 
session_start(); 

if(!empty($_SESSION)){ 
    header("Location: home.php"); 
    exit; 
} 
+0

当然! *叹*脑呃 非常感谢大家。 – 2010-08-25 08:40:13

+0

@迈克尔:不要忘记接受这个答案。 – janmoesen 2010-08-25 09:11:45

0

您应该在if块中添加die()exit(),否则脚本的其余部分将继续执行。

-1
if(!empty($_SESSION['loggedIn']){ 
header("Location: home.php"); 
die(); 
} 
+1

似乎对我很好。试试:'var_dump(empty($ _ SESSION));' – cbednarski 2010-08-25 07:10:54