if (! isset ($ _ POST ["user"]) игнорируется и возвращает неопределенный индекс - PullRequest
2 голосов
/ 16 апреля 2011

Когда я вывожу этот код,

23  if(!isset($_POST['user'])) {
24    $user = $_POST['user'];
25    $user2 = $user;
26    $pass[0] = $_POST['password'];
27    $pass[1] = $_POST['password2'];
28    $email[0] = $_POST['email'];
29    $email[1] = $_POST['email2'];
30    $agree = $_POST['agreed'];
31    $reprint['user'] = $user;
32    $reprint['password'] = $pass[0];
33    $reprint['email'] = $email[0];
34    $reprint['agree'] = $agree;

возвращает

Notice: Undefined index: user in C:\Program Files\EasyPHP-5.3.6.0\www\Arena\create_account.inc on line 24
Notice: Undefined index: password in C:\Program Files\EasyPHP-5.3.6.0\www\Arena\create_account.inc on line 26
Notice: Undefined index: password2 in C:\Program Files\EasyPHP-5.3.6.0\www\Arena\create_account.inc on line 27
Notice: Undefined index: email in C:\Program Files\EasyPHP-5.3.6.0\www\Arena\create_account.inc on line 28
Notice: Undefined index: email2 in C:\Program Files\EasyPHP-5.3.6.0\www\Arena\create_account.inc on line 29

Обратите внимание, что в строке 23 ошибки нет, поэтому isset () всегда возвращает true; Я не получаю никакой ошибки, когда все мои $ _POST [] фактически установлены. Возможно, вы не сможете воспроизвести это; это может быть только EasyPHP. Я сейчас на последней версии EasyPHP, с PHP 5.3.6 VC9. У меня всегда была эта проблема со всеми версиями EasyPHP ... Так что я не уверен, есть ли "лучший" синтаксис или способ предотвратить отображение этих ошибок в EasyPHP.

Ответы [ 4 ]

7 голосов
/ 16 апреля 2011

Вы говорите, если $_POST['user'] имеет , а не было установлено. Попробуйте удалить оператор отрицания !.

// if user key has *not* been set
if(!isset($_POST['user'])) {
    $user = $_POST['user']; // undefined index because there is no 'user' key


if(isset($_POST['user'])) {
    $user = $_POST['user']; // no problems here
0 голосов
/ 16 апреля 2011
error_reporting(E_ALL ^ E_NOTICE);

:)

Я думаю, вы должны изменить isset на !empty ...

!empty($_POST["user"])
0 голосов
/ 16 апреля 2011

isset () возвращает true, если переменная установлена, и false, если это не так.Текущая логика выполняется, только если $ _POST ['user'] НЕ установлено.Это умышленно?

Мне кажется, вам нужно удалить своего неоператора.

0 голосов
/ 16 апреля 2011

Вы пробовали:

if (isset($_POST['user'])) {

Параметр! Isset означает, что он не установлен.

...