2017-04-07 231 views
2

這裏是我的代碼爲user-authentication.php設置會話:會話重定向後不工作

session_start(); 
$_SESSION['admin_name'] = $name; 
$_SESSION['sbc_admin'] = "y"; 
$_SESSION['admin_email'] = $email; 

header("Location:includes/user-auth.php"); 

和這裏的代碼來檢查會話是否設置或user-auth.php

session_start(); 
    if (isset($_SESSION["sbc_admin"])) { 
     $admin = $_SESSION["sbc_admin"]; 
     $name = $_SESSION["admin_name"]; 
     $email = $_SESSION["admin_email"]; 
    } else { 
     header("Location:../index.php"); 
} 

重定向後,會話變量丟失。我已經嘗試了一些技巧,但它仍然無法正常工作。

+2

確保你已經在打開php標籤後放置了'session_start();'。 – Jer

+0

打印會話時獲得什麼?通過print_r($ _ SESSION)?? –

+1

你試過了幾個「訣竅」?請把它們包括在上面。 – ITWitch

回答

0

session_start();並置於所有代碼的頂部。你基本上希望它成爲運行的第一種方法之一,如果不是的話。

我傾向於創建一個名爲lib.php的文件,該文件被調用到Header.php文檔中。這個LIB文件中包含的所有對象的創建,某些功能等的代碼頁上的第一個位是:

<?php 
session_start(); 
//the rest of the code here 
-2

會話不能破壞,直到調用session_destroy()或$ _SESSION = NULL。 無論是否有會話,您都可以通過print_r($ _ SESSION)獲取所有會話; 嘗試而不是使用「在session_start()」的所有網頁上的這個

+0

這不是一個答案,這是一條評論 – GordonM

+0

@GordonM。什麼是賴特的答案。 – whoami

0
You should start the session on all your php files like below code, else you can start session on common file (which file included on all files) 

test1.php 
<?php 
session_start(); 
$_SESSION['admin_name'] = 'test'; 
$_SESSION['sbc_admin'] = "y"; 
$_SESSION['admin_email'] = 'test1'; 

header("Location:test2.php"); 
?> 

test2.php 
<?php 
session_start(); 
print_r($_SESSION); 
exit(); 
?> 
0

,你應該有一個包括所有PHP頁面的PHP文件。就像一個頭文件或一個配置文件。

您需要檢查會話是否已啓動,如果沒有啓動會話。 你可以從這個答案中得到啓發,看看如何檢查和開始5.4版本之前和之後出現的PHP版本的會話:https://stackoverflow.com/a/18542272/1564840

+0

重新啓動服務器解決了問題。可能是服務器的溫度已滿。重啓服務器後,現在一切正常。感謝所有:) –

+0

下次使用兩個瀏覽器測試時,瀏覽器緩存是您的問題 – Pascut

+0

這不是關於瀏覽器緩存,我是在談論服務器緩存 –