PHP代码突然停止工作

时间:2012-11-20 19:36:31

标签: php arrays session

  

可能重复:
  PHP: “Notice: Undefined variable” and “Notice: Undefined index”

有正常运行的代码。不得不重新启动服务器,现在它不起作用。

我在“登陆”页面的开头有这个(这是用户在验证密码后访问的页面)

<?PHP session_start(); ?> 
<html><head> 
<title>Welcome</title> 
</head><body> 
<?PHP $_SESSION['valid']='TRUE'; ?> 

... code and HTML ... 

</body></html>

当我做print_r时,我得到了

"Array([valid] => TRUE)"

在我以后的所有页面中,我都有

<?PHP session_start(); ?> 
<html> 
<head><title>Page Title</title> 
</head> 
<body> 
<?php 
/// Kick them out if they try to open this page directly 
if ($_SESSION['valid']!='TRUE') { 
session_destroy(); 
die("<b>You must be logged into this application to use it</b>"); 
?> 

... code and html ... 

</body></html>

此前工作正常,但现在我得到了:

注意:未定义的索引:在第9行的C:\ inetpub \ wwwroot \ usermanager \ selectuser.php中有效

您必须登录此应用程序才能使用它。

当我在print_r中放入一个调试语句时,我只得到“Array()”作为$ _SESSION的值。

为什么它不再起作用了?!?现在我已经把我的头发撕成了四个小时,试图解决这个问题。 NOTHING在代码中已更改, 正在工作。

5 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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!'; 
}

答案 2 :(得分:0)

您可以将if语句更改为:

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

但是为什么你使用字符串'TRUE'来表示php在预定义的布尔值true中所拥有的东西?

答案 3 :(得分:0)

感谢所有回复的人。事实证明这是会话商店的一个问题。

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

我们将整个网站移动到一个新的虚拟机,现在它正常运行。

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

感谢您的帮助!感恩节快乐

答案 4 :(得分:0)

感谢所有回复的人。事实证明这是会话商店的一个问题。

我查看了路径,这是正确的,但是当我实际去机器上时,它充满了垃圾文件和文件名,其中包含不良字符。我们在同一台整体服务器上的多台虚拟机上运行各种Web服务器,不同区域的其他几台也存在问题。

我们将整个网站移动到一个新的虚拟机,现在它正常运行。

确实了解了isset()的价值,所以我现在可以不仅向登出的人显示错误,而且还向那些从未登录过的人显示错误,所以这一天没有完全是浪费。

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