为什么我会收到“未定义的索引” 来自我的 PHP?
当我运行此代码时:
<?php
if (preg_match('/^[a-z0-9]+$/', $_GET['p'])) {
$page = realpath("includes/$_GET[p].php");
if ($page) {
include $page;
}
}
?>
我收到此错误:
注意:未定义索引:index.php 第 3 行中的 p
When I run this code:
<?php
if (preg_match('/^[a-z0-9]+$/', $_GET['p'])) {
$page = realpath("includes/$_GET[p].php");
if ($page) {
include $page;
}
}
?>
I get this error:
Notice: Undefined index: p in index.php on line 3
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
错误消息表明不存在带有键
p
的数组项。 如果您不能保证变量(或数组项)确实存在,您应该首先使用isset 检查它
函数:The error message says that there is no array item with the key
p
. If you cannot guarantee that a variable (or array item) does exist, you should first check it with theisset
function:Gumbo 所说的检查数组中是否设置了索引。
也适用于 解析 a 中的数组索引string 你应该在数组周围使用括号,如果它是字符串,你应该用单引号转义索引。
但要包含用户建议的文件,最安全的方法是在数组中查找文件,并且仅在存在时才包含它们。
What Gumbo said for checking if the index is set in the array.
Also for parsing an array index in a string you should use brackets around the array, and you should escape the index with single quotes if it is a string.
But for including files suggested by the user, the safest way is to look up the files in an array, and only include them if they exists there.
没有真正的问题。 PHP 生成通知,而不是警告或错误。 基本上,您的脚本没有接收
p
URL 参数。 因此它使用 '' 并在日志中给出通知。 如果您在呈现的页面上看到此消息,请将 php 错误报告调整为类似E_ERROR | PHP.ini 中的 E_WARNING
There is no real problem. PHP yields a Notice not a Warning or Error. Basically, your script is not receiving the
p
URL parameter. So it uses '' and gives a notice in the log. If you see this message on your rendered page, adjust php error reporting to something likeE_ERROR | E_WARNING
in PHP.ini页面可能没有“p”参数? 您是指
$_REQUEST
吗?另外,访问数组时不是“${_GET['p']}”吗?
There is no 'p' parameter to the page, maybe? Did you mean
$_REQUEST
instead?Also, is it not `"${_GET['p']}" when you are accessing an array?
查看 array_key_exists() 来检查数组键...是否存在。 但就您而言,我建议您选择专门处理用户输入的 filter 类函数。
Look into array_key_exists() for checking whether an array key... exists. But in your case I suggest you pick up the filter class of functions which specialize in working with user input.