2012-07-28 50 views
1

我在保持會話在我的網站的主目錄中處於活動狀態時出現問題。會話在頁面上消失

我有一個名爲login.php的文件,其中設置了會話。然後,如果我導航到index.php並執行print_R($_SESSION),它會打印它。然後我去gallery.php,它不見了。以相反的順序也是如此:如果我先去gallery.php,然後在index.php中消失,則會出現。

我在想這可能是php.ini有關。

編輯: 好,我想通了,這是一個包含文件造成這個,它包括兩個頁面,叫「nav.php」上

<?php 
session_start(); 
$logout = intval($_GET['logout']); 
if(isset($logout)){ 
session_destroy(); 
//header('Location: '$_SERVER['PHP_SELF']); 

} 
echo '<a href="/index.php" title ="home" class="navbutton">home</a> 

<a href="/gallery.php" title ="gallery"class="navbutton">gallery</a> 
<a href="/info.php"title ="info"class="navbutton">info</a> 

<a href="/contact.php"title="contact"class="navbutton">contact</a>'; 

if(isset($_SESSION['names']) || isset($_SESSION['guestlogin'])){echo '<a href="'.$_SERVER['PHP_SELF'].'?logout=1" title="logout"class="navbutton">logout</a>'; 
echo'<a href="/gallery" title ="gallery"class="navbutton"> test gallery</a>'; 

} 
else{echo '<a href="/login" title="login"class="navbutton">login</a>'; 
} 
echo'<a href="/blog"title ="blog"class="navbutton">blog</a> 

<a href="/prints"title ="prints"class="navbutton">prints</a>';?> 

不可能是B/C有session_destroy在它還是什麼?所有包含文件都應該有一個session_start對他們?

+2

如果您發佈了gallery.php代碼 – 2012-07-28 14:25:32

+0

,我們可以提供幫助。您的代碼可能有問題。 – 2012-07-28 14:25:56

+2

我的猜測是那個gallery.php缺少session_start() – MilMike 2012-07-28 14:32:36

回答

0
$logout = intval($_GET['logout']); 
if(isset($logout)) { 
    session_destroy(); 
} 

您在這裏看到問題了嗎? $logout總是有些價值。不管價值是什麼。所以isset($logout)總是TRUE。將其更改爲:

if(isset($_GET['logout']) && $_GET['logout']) { 
    session_destroy(); 
} 

這將註銷用戶,如果他在查詢字符串URL遵循與logout=1

+0

很感謝。我想如果沒有獲得變量,我認爲這將是錯誤的。現在我明白了 – user718229 2012-07-28 15:13:03