В 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']
.