Еще одно замечание: неопределенный индекс Вопрос - PullRequest
1 голос
/ 28 марта 2011

Я продолжаю получать

Примечание: неопределенный индекс: действие

Когда я использую следующий код. Я использую его, чтобы увидеть, какая страница требуется. В любом случае, чтобы разобраться с этим? Я знаю, что вы не должны просто включать файлы из пользовательского ввода (без предварительной проверки ввода), но этот оператор switch работает только в том случае, если действие установлено на просмотр или нет, в противном случае просто отображается главная страница.

? 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';
}

Ответы [ 4 ]

6 голосов
/ 28 марта 2011

Перепишите ваш код следующим образом:

$action = isset($_GET['action']) ? $_GET['action'] : null;

switch ($action) { ... }
0 голосов
/ 28 марта 2011

Существует специальная синтаксическая конструкция @ для игнорирования уведомлений, когда они доказуемо избыточны.

switch (@$_GET['action']) {

Тройка isset используется в качестве обходного пути микрооптимизации, но в остальном не имеет практического преимущества в вашем случае.

0 голосов
/ 28 марта 2011

Вы используете элемент массива, не проверяя, существует ли он.Вы должны убедиться, что ваш код не пытается прочитать $_GET['action'], если это не может быть определено.

Вы можете сделать это так, чтобы не требовалось изменять логику switch, дав $_GET['action'] определенное (но "пустое") значение, если action не указано в строке запроса:

if (!isset($_GET['action']))
    $_GET['action'] = null;

switch ($_GET['action']) {
   ...
}
0 голосов
/ 28 марта 2011

Ошибка означает, что вы пытаетесь использовать $ _GET ['action'], когда он не существует. Как, например, когда вы переходите на страницу без передачи page.html? Action = xxx

...