重新加载页面后会话变量为空
Session variable empty after reloading page?
我有一个简单的页面,上面有一个下拉菜单,我可以在两个值之间进行选择,FOO
和BAR
。所选值应存储在我的会话变量$_SESSION['typ']
中。到目前为止它有效,但我注意到每次我按 F5 或使用 javascript 调用location.reload()
时,会话变量都会因某种未知原因而被清除。
主.php
<?php
ini_set('session.gc_maxlifetime', 1);
session_set_cookie_params(0.1);
session_start();
if (!isset($_SESSION['typ']))
{
$typ = "FOO"; //load default value
$_SESSION['typ'] = $typ;
//---Debug Output----
$tmpvar = $_SESSION['typ'];
echo "<p>Session variable is not set</p>";
echo "<p>Session variable value: '$tmpvar'</p>";
}
else
{
//---Debug Output----
$tmpvar = $_SESSION['typ'];
echo "<p>Session variable is set, value = '$tmpvar' </p>";
$typ = $_SESSION['typ']; //initialise variable $typ with session variable
}
?>
下拉菜单,我可以在其中设置我的$typ变量。
<form name="typ_overwrite" method="POST" action="set_typ.php" enctype="multipart/form-data">
TYP: <select name="typ" id="typ" onchange="document.typ_overwrite.submit()">
<?php
if($typ == "FOO")
{
echo '<option value="FOO">FOO</option>';
echo '<option value="BAR" selected>BAR</option>';
}
elseif($typ == "BAR")
{
echo '<option value="BAR">BAR</option>';
echo '<option value="FOO" selected>FOO</option>';
}
else
{
echo '<option value="ERROR">ERROR</option>';
}
?>
</select>
</form>
set_typ.php
<?php
session_start();
$typ = $_POST['typ'];
$_SESSION['typ'] = $typ;
header("location:main.php");
exit();
?>
如果我第一次加载页面,则输出:
Session variable is not set Session variable value: 'FOO'
从下拉菜单中选择 BAR 后的输出:
Session variable is set, value: 'BAR'
按 F5 或调用location.reload()
后输出
Session variable is not set Session variable value: 'FOO'
我希望有人能启发我为什么我的会话变量在重新加载页面时被清除。
我发现了问题...正是因为这行代码,我把它注释掉了,现在它按预期工作。有人可以解释我必须在哪里设置它吗?
ini_set('session.gc_maxlifetime', 1);
编辑:原因是gc_maxlifetimes参数单位以秒为单位,而不是我想象的以小时为单位,因此会话在 1 秒后过期,因此清除了 SESSION 变量。感谢赫格指出这一点。
相关文章:
- 将会话变量从一个页面传递到另一个页面
- 如何使用 php 会话变量作为 Angular Js 数据
- 通过Javascript更改PHP会话变量
- 正在Javascript响应中设置会话变量
- 将会话变量与javascript变量进行比较
- 我在会话变量中传递了一个数组.我需要将关键笔划传递给它以返回值
- 无法获取php会话变量以在javascript中设置var
- 使用Jquery在页面加载上测试php会话变量
- 移动浏览器没有;t支持会话变量
- 如果JS会话变量为null,如何避免500内部服务器错误
- 带有 Meteor 的通用会话变量键模板助手
- 使用 Javascript 或 jQuery 检索会话变量的简单快捷的方法
- 设置会话变量并从Jquery更改页面
- Meteor会话变量未存储数组
- PHP未通过javascript代码访问会话变量集
- 调用外部JavaScript文件中的会话变量
- 用户使用会话变量登录
- 通过AJAX将会话变量传递到PHP文件
- 更新图像切换上的php会话变量
- 为什么php页面刷新发布会话变量