我一直在
注意:未定义的索引:操作
当我使用以下代码时。我用它来查看哪个页面是必需的。无论如何要解决这个问题?我知道你不应该只包含来自用户输入的文件(不先检查输入),但是这个switch语句只有在action设置为view或blah时才有效,否则只显示主页面。
?action = view或?action = blah
switch ($_GET['action'])
{
case 'view':
echo "We are in view";
require FORUM_ROOT . 'view2.php';
break;
case 'blah':
echo "We are in blah";
break;
default:
"This is default";
require FORUM_ROOT . 'main.php';
}
答案 0 :(得分:6)
以这种方式重写代码:
$action = isset($_GET['action']) ? $_GET['action'] : null;
switch ($action) { ... }
答案 1 :(得分:0)
错误意味着您在$ _GET ['action']不存在时尝试使用它。例如,当你转到页面而没有传递page.html?action = xxx
答案 2 :(得分:0)
您正在使用数组元素而不检查它是否存在。您应确保在未定义代码时,您的代码不会尝试阅读$_GET['action']
。
如果没有给出switch
,您可以通过给$_GET['action']
一个已定义(但“为空”)值来不需要更改action
逻辑的方式执行此操作在查询字符串中:
if (!isset($_GET['action']))
$_GET['action'] = null;
switch ($_GET['action']) {
...
}
答案 3 :(得分:-1)
有一个特定的语法构造@
用于在可证明冗余时忽略通知。
switch (@$_GET['action']) {
isset三元用作微优化解决方案,但在您的情况下没有任何实际好处。