可能重复:
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。 :)谢谢!
答案 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']))