PHP会话变量未注册

PHP会话变量未注册,php,session-variables,Php,Session Variables,我搜索了一整天,发现了几个类似的问题,但都没有解决我的问题。正如标题所述,会话变量无法“保存”,即它们只能像局部变量一样工作。我正在努力实现的目标: defualt未运行功能为“ABC”的索引页 -链接到myscript.php以激活布尔类型的会话变量 -php检查会话变量是否已设置,如果未设置,则将其转换为true。否则会将其变为false: 索引页现在应该激活了“ABC”功能 所以,有趣的是。今天早些时候,这就像一个符咒,但经过一次随机刷新,现在没有了。认为这是会话问题,我添加了会话ID,但

我搜索了一整天,发现了几个类似的问题,但都没有解决我的问题。正如标题所述,会话变量无法“保存”,即它们只能像局部变量一样工作。我正在努力实现的目标:

defualt未运行功能为“ABC”的索引页 -链接到myscript.php以激活布尔类型的会话变量 -php检查会话变量是否已设置,如果未设置,则将其转换为true。否则会将其变为false: 索引页现在应该激活了“ABC”功能

所以,有趣的是。今天早些时候,这就像一个符咒,但经过一次随机刷新,现在没有了。认为这是会话问题,我添加了会话ID,但发现索引页和myscript.php上的会话ID都是正确的/相同的

我还尝试启用错误报告,发现我得到了“未定义索引:第15行C:\xampp\htdocs\kelvin\ext\set_date.php中的showAll”。这是weired,seing,因为我使用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');
?>


提前,感谢您的任何意见:)

您的问题可能在这里:

if (!isset($_SESSION['showAll'])) {
  $_SESSION['showAll'] == TRUE;
}
双等号(
==
)检查是否相等,但不设置任何内容

尝试将其替换为单个等号(
=


此外,您的逻辑也可以相当精简:

if (!isset($_SESSION['showAll'])) {    
  $_SESSION['showAll'] = true;
} else {
  $_SESSION['showAll'] = !$_SESSION['showAll'];
}

您只是在交换
$\u SESSION['showAll']

的值,您的问题可能在这里:

if (!isset($_SESSION['showAll'])) {
  $_SESSION['showAll'] == TRUE;
}
双等号(
==
)检查是否相等,但不设置任何内容

尝试将其替换为单个等号(
=


此外,您的逻辑也可以相当精简:

if (!isset($_SESSION['showAll'])) {    
  $_SESSION['showAll'] = true;
} else {
  $_SESSION['showAll'] = !$_SESSION['showAll'];
}

您只是在交换
$\u SESSION['showAll']

的值。您是否在其他文件中打开了会话?是否在其他文件中打开了会话?非常感谢!由于我从一个带有双等号错误的旧模板复制,所以发生了这种情况。除了小的打字错误,模板上的一切都是一样的。关于逻辑,我不同意,或者至少,我不认为它是这样运作的。这是一个可以通过HTML链接打开或关闭的函数,逻辑很简单。在您的示例中,首先检查
var
是否为
true
。如果是,则将其设置为
false
。如果不是,则将
设置为true
。将
true
false
交换,将
false
true
交换。我的也一样,因为我所做的就是将
var
设置为其相反的值。啊哈,我没有意识到这一点。再次感谢!:)非常感谢你!由于我从一个带有双等号错误的旧模板复制,所以发生了这种情况。除了小的打字错误,模板上的一切都是一样的。关于逻辑,我不同意,或者至少,我不认为它是这样运作的。这是一个可以通过HTML链接打开或关闭的函数,逻辑很简单。在您的示例中,首先检查
var
是否为
true
。如果是,则将其设置为
false
。如果不是,则将
设置为true
。将
true
false
交换,将
false
true
交换。我的也一样,因为我所做的就是将
var
设置为其相反的值。啊哈,我没有意识到这一点。再次感谢!:)