【发布时间】:2017-04-14 12:10:50
【问题描述】:
几个月前,我正在调试一个 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'); 但这并没有解决问题。
【问题讨论】:
-
注意:我将这些确切的文件从 bluehost 复制到 hostgator,它们在那里工作正常。所以它似乎与托管有关,但 bluehost 说这是我要解决的问题。不知道该让他们做什么。
-
也许您还有其他要求?在特定情况下,我有一个正在启动会话的 404 页面。在我的网站中没有网站图标,我的浏览器正在请求它,并且两个请求到达服务器时出现了不可预知的行为。
-
上面列出了所有代码——所以我不这么认为?
-
好的。我已经在我的本地服务器上测试了你的代码,它似乎在这里工作。
-
这肯定是bluehost的问题,但他们的技术支持不是很支持。
标签: php session session-variables