-1
4

5 回答 5

2

这是正确的。$_SESSION确实是您存储的会话变量数组。您的第二个代码不起作用,因为从技术上讲,您的数组中没有valid变量。$_SESSION最好使用:if(!isset($_SESSION['valid']))代替。

于 2012-11-20T19:40:01.290 回答
0

感谢所有回复的人。原来这是会话存储的问题。

里面有一大堆垃圾文件。我们在几台虚拟机上安装了我们的 Web 服务器,而同一台机器上的其他几台服务器出现了问题。

我们将整个网站移到了一个新的虚拟机上,现在它运行良好。

不过,我确实了解了 isset() 的价值,所以这一天并没有完全浪费。

谢谢大家的帮助!感恩节快乐

于 2012-11-20T20:56:59.227 回答
0

感谢所有回复的人。原来这是会话存储的问题。

我查看了正确的路径,但是当我在机器上实际走到那里时,它充满了垃圾文件和带有坏字符的文件名。我们在同一台整体服务器上的多个虚拟机上运行了各种 Web 服务器,不同领域的其他几个也有问题。

我们将整个网站移到了一个新的虚拟机上,现在它运行良好。

不过,我确实了解了 isset() 的价值,因此我现在不仅可以向已注销的人显示错误,还可以向从未登录过的人显示错误,因此这一天并没有完全浪费。

再次感谢您的帮助,感恩节快乐

于 2012-11-20T21:14:20.363 回答
0

该通知告诉您该索引没有设置任何内容,因此Undefined Index

解决此问题的一种方法是isset()在进行比较或从中获取值之前检查变量是否已设置。

if (!isset($_SESSION['valid'])) { 
    session_destroy(); 
    die("<b>You must be logged into this application to use it</b>"); 
?> 

http://www.php.net/manual/en/function.isset.php

您可能还想检查您的会话文件夹是否可写(通常/tmp/

if (!is_writable(session_save_path())) {
    echo session_save_path().'" is not writable!'; 
}
于 2012-11-20T19:41:29.723 回答
0

您可以将if语句更改为:

<?php 
if isset($_SESSION['valid']) && $_SESSION['valid'] == 'TRUE' ; ?> 

但是为什么要使用字符串 'TRUE' 来表示 php 在预定义的 boolean 中包含的内容true

于 2012-11-20T19:42:45.397 回答