我一直在寻找并发现了几个类似的问题,但没有一个能解决我的问题。正如标题所述,我遇到的问题是会话变量没有“保存” - 即它们只能像局部变量一样工作。我想要完成的任务:
索引页面,函数“ABC”未运行defualt - 链接到myscript.php以激活boolean类型的会话变量 - myscript.php检查是否设置了会话变量,如果没有,则将其设置为true。否则将其变为false: 索引页面现在应该已激活“ABC”功能。
所以,这是有趣的事情。这在今天早些时候就像一个魅力,但在随机刷新之后,现在却没有。认为这是一个会话故障,我添加了一个会话ID但发现会话ID在索引页面和myscript.php上都是正确/相同的。
我也尝试启用错误报告,发现我在第15行收到了“Undefined index:showAll in C:\ xampp \ htdocs \ kelvin \ ext \ set_date.php”。这是必须的,因为我使用issset函数来避免这种情况。
myscript.php
<?php
session_start();
echo "Session ID: " . session_id(); //Is the same as on the index page where the script is being called.
---------------
//Sets speed mode on or off (simple or extensive listing).
if(!isset($_SESSION['showAll']))
{
$_SESSION['showAll'] == TRUE;
}
else {
if($_SESSION['showAll'] == TRUE)
{
$_SESSION['showAll'] = FALSE;
}
else
{
$_SESSION['showAll'] = TRUE;
}
}
header('location:../index.php');
?>
提前感谢任何意见:)
答案 0 :(得分:5)
你的问题可能就在这里:
if (!isset($_SESSION['showAll'])) {
$_SESSION['showAll'] == TRUE;
}
双等号(==
)检查是否相等,但没有设置任何内容。
尝试使用单个等号(=
)替换它。
此外,您的逻辑可以大大缩小:
if (!isset($_SESSION['showAll'])) {
$_SESSION['showAll'] = true;
} else {
$_SESSION['showAll'] = !$_SESSION['showAll'];
}
您只需交换$_SESSION['showAll']
的价值。