簡體   English   中英

會話數據未保存

[英]Session data not saving

我正在調試一個幾個月前最后一次測試的php會話。 代碼沒有任何改變,但是會話現在已經停止工作。

我在這里以及其他文章中已經閱讀了多個問題,但是沒有任何建議可以解決這個問題。 我相信我的代碼是正確的,但是當我向Bluehost請求支持時,他們說這一定是代碼問題:

我正在開始一個會話並設置一些會話變量:

<?php
    session_start();

$_SESSION["franchise_name"] = $_POST["name"];
$_SESSION["db_name"] = $_POST["name"];
$_SESSION["franchise_location"] = $_POST["franchise_location"];
$_SESSION["franchise_phone"] = $_POST["franchise_phone"];
$_SESSION["franchise_address"] = $_POST["franchise_address"];
$_SESSION["franchise_email"] = $_POST["franchise_email"];

header("Location: session.php"); /* Redirect browser */
exit;

?>

如果我在設置它們后立即回顯會話變量,一切都很好。 好東西。 因此,我知道本節中的所有內容均適用。

session.php看起來像這樣:

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
    session_start();
echo 'Testing Output:';
echo session_status();
echo '<pre>';
var_dump($_SESSION);
echo '</pre>';
phpinfo();
?>

因此,當我對此進行測試時,會話中不會傳遞任何數據。 session.php的輸出是:

Testing Output:2
array(0) {
}

我還設置了一個測試器,以查看是否啟用了會話數據:

<?php
// Start Session
session_start();
// Show banner
echo '<b>Session Support Checker</b><hr />';
if (!is_writable(session_save_path())) {
    echo 'Session path "'.session_save_path().'" is not writable for PHP!<br />'; 
} else {
    echo 'Session path "'.session_save_path().'" is writable for PHP!<br />'; 

}
// Check if the page has been reloaded
if(!isset($_GET['reload']) OR $_GET['reload'] != 'true') {
   // Set the message
   $_SESSION['MESSAGE'] = 'Session support enabled!<br />';
   // Give user link to check
   echo '<a href="?reload=true">Click HERE</a> to check for PHP Session Support.<br />';
} else {
   // Check if the message has been carried on in the reload
   if(isset($_SESSION['MESSAGE'])) {
      echo $_SESSION['MESSAGE'];
   } else {
      echo 'Sorry, it appears session support is not enabled, or you PHP version is to old. <a href="?reload=false">Click HERE</a> to go back.<br />';
   }
}
?>

該測試的結果表明,會話數據在這里也不起作用,並且會話路徑確實是可寫的。 Phpinfo顯示已啟用會話。

還有什么我可以嘗試幫助解決此問題的方法嗎? 謝謝。

更新:我確實嘗試使用ini_set('session.save_path','SOME WRITABLE PATH')查看會話路徑; 但這並不能解決問題。

從php session_start()頁面:

注意事項
要使用基於cookie的會話,必須在將任何內容輸出到瀏覽器之前調用session_start()

刪除session_start()之前的空格,它們被視為輸出。


更新:

它也可能與會話文件的位置有關,您可以嘗試設置一個新位置:

ini_set('session.save_path','/some/safe/path/to/sessions');
session_start();

確保sessions具有適當的權限

我給Blue Host打了電話-第二個支持人員比第一個更警惕,並且意識到Varnish Caching可能會引起問題。 我們禁用了它,瞧! 固定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM