未定义的索引:id

时间:2012-10-25 16:27:48

标签: php xampp

  

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

好的,所以我正在尝试构建我的网站,我遇到了一个小问题。我收到的错误如“未定义的索引:在第18行的C:\ xampp \ htdocs \ index.php中的id” 和 “未定义的索引:在第39行的C:\ xampp \ htdocs \ index.php中提交”

我确信这是语法问题,但我似乎找不到合适的答案。这是第16-18行的index.php文件中的php代码

session_start();

if($_SESSION['id'] && !isset($_COOKIE['logRemember']) && !$_SESSION['rememberMe'])

在我在linux中运行Apache 2之前,代码工作正常。现在我在Windows上运行Xampp,突然间它不想正常工作。

无论谁回答这个,请写成愚蠢的。我还在学习php。 :)谢谢!

6 个答案:

答案 0 :(得分:2)

不,这不是语法错误。您正在尝试访问不存在的密钥。似乎您以前的服务器上禁用了警告。

在尝试访问之前,检查是否设置了实际变量(使用isset):

if(
    isset($_SESSION['id']) &&
    !isset($_COOKIE['logRemember']) &&
    isset($_SESSION['rememberMe'] &&
    !$_SESSION['rememberMe']
)

答案 1 :(得分:0)

您在isset()变量上使用$_COOKIE,因此您必须知道如何检查变量是否存在。只需将其应用于$_SESSION['id']等等,错误就会停止。

答案 2 :(得分:0)

首次投放时,$_SESSION['id']$_SESSION['rememberMe']将不会设置。 您必须检查它们是否已设置(就像您对cookie一样)

if(isset($_SESSION['id']) && !isset($_COOKIE['logRemember']) && !isset($_SESSION['rememberMe']))

答案 3 :(得分:0)

它“工作”的原因是因为Apache 2服务器可能未配置为显示错误。您的问题是$_SESSION['id']未设置。相反,检查它是否与

isset($_SESSION['id'])

如果未设置错误,则不会抛出错误。

答案 4 :(得分:0)

检查存储会话数据的目录是否可由apache写入。您可以使用session_save_path ();

来获取路径

答案 5 :(得分:0)

用以下代码替换行

session_start();

if(isset($_SESSION['id']) && !isset($_COOKIE['logRemember']) && !isset($_SESSION['rememberMe']))