PHP会话变量没有注册

Ind*_*dex 1 php session-variables

我一直在寻找并发现了几个类似的问题,但没有一个能解决我的问题.正如标题所述,我遇到的问题是会话变量没有"保存" - 即它们只能像局部变量一样工作.我想要完成的事情:

函数"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".哪个是weired,因为我使用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');
?>
Run Code Online (Sandbox Code Playgroud)

提前,谢谢你的任何输入:)

Ble*_*der 5

你的问题可能在这里:

if (!isset($_SESSION['showAll'])) {
  $_SESSION['showAll'] == TRUE;
}
Run Code Online (Sandbox Code Playgroud)

双等号(==)检查是否相等,但没有设置任何东西.

尝试用单个等号(=)替换它.


此外,您的逻辑可以大大缩小:

if (!isset($_SESSION['showAll'])) {    
  $_SESSION['showAll'] = true;
} else {
  $_SESSION['showAll'] = !$_SESSION['showAll'];
}
Run Code Online (Sandbox Code Playgroud)

你只是交换价值$_SESSION['showAll'].