$ _POST пуст после [закрытого] представления формы

Бьюсь об заклад, вы ENTER (ing) два раза, потому что вы ожидаете, что курсор переместится на следующую строку в консоли, что не произойдет с Scanner#next.

Просто переключитесь с next() на nextLine().
Также помните, что вы не можете добавлять пробелы перед фактическим числом при использовании nextDouble().

8
задан user2864740 21 June 2014 в 19:21
поделиться

7 ответов

Ваши элементы ввода не имеют атрибутов имени. Должно быть:

<input type="text" id="login_email" name="login_email" />

Если элемент ввода не имеет атрибута name, он не отправляется как часть данных POST.

52
ответ дан 5 December 2019 в 04:29
поделиться

Что ж, у вас нет действия для тега формы? Это должно быть имя сценария:

<form method="post" action="scriptname.php">

... и вы также не устанавливаете имена для каждого ввода формы - браузер не отправляет идентификатор в качестве имени элемента.

9
ответ дан 5 December 2019 в 04:29
поделиться

Для входных элементов нет атрибута имени.

2
ответ дан 5 December 2019 в 04:29
поделиться
<form method="POST" action="<?php echo $PHP_SELF; ?>

<p><label>Email: </label>
<input type="text" name="login_email" />
</p>

<p><label>Password: </label>
<input type="password" name="login_password" />
</p>

<p><label>Remember Me?: </label>
<input type="checkbox" name="login_remember" />
</p>

<p>
<input type="submit" value="Login" />
</p>

</form>
4
ответ дан 5 December 2019 в 04:29
поделиться

Все ваши входные элементы нуждаются в атрибуте имени.

0
ответ дан 5 December 2019 в 04:29
поделиться

Я предлагаю вам написать что-то вроде следующих функций на основе помощников Zend_View.

formText($name, $value = null, array $attribs = null)
formPassword($name, $value = null, array $attribs = null)
formLabel($id, $text, array $attribs = null)
formHidden($name, $value = null, array $attribs = null)
formSubmit($name = null, $text = null, array $attribs = null)
formSelect($name, $selected, array $attribs = null, array $options = null)
formCheckbox($name, $default, array $attribs = null, array $options = null)

Тогда вы никогда больше не забудете / не пропустите что-то подобное.

<form method="POST" action="<?php echo $PHP_SELF; ?>

<p>
<?php
echo formLabel('login_email', 'Email'), ':',
     formText('login_email'); 
?>
</p>

<p>
<?php
echo formLabel('login_password', 'Password'), ':',
     formPassword('login_password'); 
?>
</p>

<p>
<?php
echo formCheckbox('login_remember'), ' ', 
     formLabel('login_remember', 'Remember me');
?>
</p>

<p>
<?php
echo formSubmit(null, 'Login');
?>
</p>
</form>

Совет:

  • Если id не определен в attribs, id совпадает с name, за исключением меток, где id используется в атрибуте for = "$ id", а formHidden также не должен иметь id по умолчанию.
  • formCheckbox записывает перед собой formHidden с тем же именем с отрицательным значением, поэтому вы получите возвращаемое значение, если флажок также не установлен.
  • formCheckbox options - это массив со значениями для отмеченного или снятого флажка.
  • Используйте фильтр с FILTER_VALIDATE_BOOLEAN, чтобы прочитать возвращаемое значение из флажка, чтобы проверить, отмечен он или нет.
1
ответ дан 5 December 2019 в 04:29
поделиться

Вы забыли атрибуты имени, необходимые для работы вашего скрипта. Вы также можете включить тег «for» в свои ярлыки, чтобы он соответствовал атрибутам имен вашего ввода. Это не является требованием, но может помочь с форматированием вашей формы CSS:

<p>
<label for="login_email">Email: </label>
<input type="text" name="login_email" id="login_email" />
</p>

Помогает согласовать все и сделать ваш код более оптимизированным и читаемым, если вам придется вернуться к нему через 6 месяцев. Атрибут action, если вы не собираетесь его заполнять, я бы включил в качестве вашего действия:

<form method="POST" action="<?php echo $PHP_SELF; ?>

Это обеспечит соответствие вашей страницы требованиям формы и выполнению сценария. Похоже на простой недосмотр. Надеюсь, это поможет.

0
ответ дан 5 December 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: