Доступ к переменным $ _POST вызывает ошибки - PullRequest
2 голосов
/ 06 декабря 2009

Мне было интересно, не могли бы вы помочь мне со следующим:

Я передаю некоторую информацию, заполненную в форме, на следующую страницу, чтобы показать. Я использую $_POST метод. Хотя информация отображается в браузере, при проверке кода отображается сообщение Примечание: неопределенный индекс ошибка, и нет никакого следа переданного значения, где оно должно быть (в коде). Я думаю, что это связано с ошибкой выше.

Я так называю, например:

$name = $_POST['name'];

Также я пытаюсь получить ту же информацию в некоторых скрытых полях, чтобы сохранить их (после просмотра страницы) в базе данных, но здесь также не передается значение. Значение в скрытом поле пусто.

Извините, если это кажется глупостью ... но поставил на карту и не знаю, что я делаю неправильно. Очень ценю любую помощь. Большое спасибо Франческо

Ответы [ 2 ]

6 голосов
/ 06 декабря 2009

В PHP вы не можете получить доступ к чтению переменных, которые не существуют. Для несуществующих нормальных переменных, таких как $foo или $bar, вы получите уведомление Undefined variable , для несуществующих индексов массива, таких как $array['foo'] или $array['bar'], вы получите Undefined index извещение и для несуществующих свойств объекта, таких как $object->foo или $object->bar, вы получите неопределенное свойство извещение.

Это связано с тем, что в PHP переменные должны быть объявлены до того, как будет осуществлен доступ для чтения. В PHP есть функция isset для проверки существования переменной, array_key_exists для индексов массива и property_exists для свойств объекта. Более того, isset - это некий универсальный инструмент для проверки существования. (Обратите внимание, что значение null эквивалентно несуществующему.)

Итак, в вашем случае вы должны проверить, существует ли $_POST['name'], прежде чем пытаться его прочитать:

if (array_key_exists($_POST, 'name')) {
    $name = $_POST['name'];
}
// or
if (isset($_POST['name']) {
    $name = $_POST['name'];
}

Но учтите, что существование $name теперь зависит от существования $_POST['name'].

1 голос
/ 06 декабря 2009

В целях отладки вы можете попробовать:

print_r ($ _ POST);

Он покажет все переменные в массиве записей. Посмотрите, есть ли там ваша переменная, если нет - что-то не так с вашей формой.

Леонтий

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...