我的脚本test.php如下.当我单击Submit时,它会将其作为登录尝试进行处理,并成功设置$_SESSION变量.但是当我重新加载页面时(通过单击返回自身的链接),$_SESSION为空.
//test.php
session_start ();
function isUserLoggedIn (&$username)
{
$loggedIn = isset ($_SESSION['loggedin']);
if ($loggedIn)
$username = $_SESSION['user'];
else
$username = '';
return $loggedIn;
}
function processLogin ()
{
$_SESSION['loggedin'] = TRUE;
$_SESSION['user'] = "podunk";
session_write_close ();
}
echo '$_SESSION before we do anything..................: ';
print_r ($_SESSION);
echo "
";
if (isset($_POST['Submit'])) processLogin ();
$loggedIn = isUserLoggedIn ($username);
echo '$_SESSION after processing any login attempt: ';
print_r ($_SESSION);
echo "
";
if ($loggedIn)
echo "I AM LOGGED IN as $username!";
else
echo "I am logged out :(";
?>
这是我在Linux apache2服务器上运行它的时候.当我在XAMPP上运行它时,$_SESSION仍然存在并且用户仍然登录.所以我猜它与php.ini有关……但也许我在这里犯了一个错误并且XAMPP正在原谅.
Linux服务器成功运行WordPress,所以它的设置不能太奇怪.刚刚进行了系统升级,如recommended. session.save_path存在并且今天有一些日期,所以我认为它有效,虽然它由root拥有而不是www-data,所以IDK如果这是一个问题.
这里有一些来自php信息的其他东西.关于那个cookie_path的IDK,所以我把它改成了session.save_path,FWIW所在的地方.
session.auto_start On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_httponly Off Off
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
使用Chrome,Firefox和IE的行为是相同的.
TIA.