2017-04-15 86 views
0

我在獲取簡單的會話數據值以在頁面重定向後保留問題時出現問題。函數檢查通過郵政發送的用戶數據,如果在數據庫中的匹配值它的會話數據集的價值觀和重定向到另一頁:頁面重定向後會話數據丟失

if ($login_ok) { 
     //set session data     
     $_SESSION ['online'] = 1; 
     $_SESSION ['userid'] = $id; 
     $_SESSION ['username'] = $name; 
     //redirect to new page 
     redirect('start.php'); 
} 

在新的頁面代碼中的會話數據未設置。簡單測試返回空值,就好像會話數據未設置一樣:

echo 'Session Login Status: ' . $_SESSION ['online']; 
    echo 'Session UserID: ' . $_SESSION ['userid']; 
    echo 'Session Username: ' . $_SESSION ['username']; 

用上面的echo語句替換重定向可以正常工作。會話數據是否已設置並且在加載任何頁面數據之前激活重定向意味着會話變量未分配?

爲了確保活動的會話始終可用,一個包含文件包含以下代碼:

if (session_status() == PHP_SESSION_NONE) { 
    session_start(); 
    } 

任何想法是什麼問題就在這裏?

非常感謝, 千瓦

+1

您是否在start.php測試以評論您的include和write session_start();沒有條件? –

+0

@Francezo相同的代碼通過相同的包含文件在start.php中運行,即:if(session_status()== PHP_SESSION_NONE){session_start();} } – Kwangle

+1

我的意思是做一個測試。無條件地創建session_start(),或者創建一個echo session_status()。也許session_status沒有返回你所期望的。只是爲了調試。 –

回答

1

檢查會話的進展之前設定

if isset($_SESSION ['online']) and 
    isset($_SESSION ['userid']) and 
    isset($_SESSION ['username']) 
{ 
    echo 'Session Login Status: ' . $_SESSION ['online']; 
    echo 'Session UserID: ' . $_SESSION ['userid']; 
    echo 'Session Username: ' . $_SESSION ['username']; 
} else { 
    echo 'Redirect to login or Session expired'; 
} 

而是重定向試試這個

$uid = $_SESSION['USERID']; 
if (isset($uid) || $uid != NULL) 
{ 
if (!headers_sent()) { 
    header('Location:main.php'); 
    exit; 
    } 
    else { 
    ?> 
    <script>window.location = 'main.php';</script> 
    <?php 
    } 
} 
+0

是的,這是評估增值稅設置,但在重定向後,他們不available.Thanks你的幫助。 – Kwangle

0

這似乎是一個服務器而不是代碼問題。在本地主機服務器上運行代碼可正常工作。希望這對遇到類似問題的人有所幫助。

說了這麼多,我不知道如何設置遠程服務器來允許會話數據。該服務器有基於瀏覽器的網絡管理軟件稱爲cPanel,有什麼建議嗎?