2010-08-25 140 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