PHP会话变量没有注册

时间:2011-06-04 17:35:59

标签: 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”。这是必须的,因为我使用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');
?>

提前感谢任何意见:)

1 个答案:

答案 0 :(得分:5)

你的问题可能就在这里:

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

双等号(==检查是否相等,但没有设置任何内容。

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


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

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

您只需交换$_SESSION['showAll']的价值。