Почему _POST не собирает данные из HTML-формы? - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь создать контактную форму для своего веб-сайта и не могу получить данные в HTML-форме для публикации в любом месте?

Я провел небольшое исследование и узнал, что для того, чтобы форма могла "POST", форма должна иметь тег ввода или кнопки с типом = "submit" и действительным именем, а форма должен иметь атрибут метода, такой как, method = "POST".

Я также проверил, собирает ли массив _POST какие-либо данные, используя: print_r($_POST); массив всегда пуст. Ниже я включил некоторый код, который создает форму, и когда вы нажимаете кнопку «Отправить», данные формы публикуются и аккуратно отображаются. Этот код не мой , код протестирован и работает с http://www.learningaboutelectronics.com/Articles/How-to-check-if-the-submit-button-is-clicked-in-PHP.php, Я включил его сюда, чтобы продемонстрировать, что по какой-то причине работающий и протестированный код все равно будет давать мне ошибки.

Я запускаю PHP через localhost с помощью Wampserver.

Сопровождающий / Обновление до 2.5 от Herve Leclerc Обновление до 3 от Otomatic (wampserver@otomatic.net) Мульти стили для домашней страницы от Jojaba Установщик от Inno Setup: http://www.jrsoftware.org/isinfo.php Форум Wampserver: http://forum.wampserver.com/index.php Используемые версии: Apache 2.4.37 Port 80 - PHP 7.2.1 MySQL 5.7.24 порт 3306 MariaDB 10.3.12, порт 3307 PHP 5.6.40 для CLI (интерфейс командной строки)

Вот проверенный и рабочий код

<form action="" method="POST">
<label>Enter Your Name Please:</label>
<input type="text"name=" name_entered" value='<?php echo $name; ?>'/>
<br><br>
<input type="submit" name="submitbutton" value="Submit"/>
</form>

<?php

$name= $_POST['name_entered'];
$submitbutton= $_POST['submitbutton'];

if ($submitbutton){
if (!empty($name)) {
echo 'The name you entered is ' . $name;
}
else {
echo 'You did not enter a name. Please enter a name into this form     field.';
}
}
?>

и мой вывод:

Enter Your Name Please: 
( ! ) Notice: Undefined variable: name in C:\wamp64\www\Practice\index.php       on line 3
Call Stack
#
Time 1
Memory 0.0001
Function 403584
Location {main}( )
...\index.php:0
'/>


The name you entered is 'example name'

У меня вопрос: эта ошибка возникает только при запуске в моей системе, и если это так, что можно сделать, чтобы устранить проблему. Также это правильный способ кодирования формы POSTable? Любые отзывы приветствуются, спасибо.

Ответы [ 3 ]

0 голосов
/ 02 мая 2019

Попробуйте поместить переменную $ name, прежде чем выводить ее на вход.После отправки оно должно иметь значение и отображаться как во входной, так и в возвращаемой строке.То есть, если я не правильно понял этот вопрос.

Также отредактировал атрибут action, он установит его для конкретной публикации на текущей странице.

Example: action="<?=$_SERVER['PHP_SELF'];?>"

Хотя это не выполнит проверку проверки W3.Некоторые альтернативы - установить имя страницы, с которой вы работаете, или action="#" и т. Д.

<?php 

$name= $_POST['name_entered'];
$submitbutton= $_POST['submitbutton'];

?>

<form action="<?=$_SERVER['PHP_SELF'];?>" method="POST">
<label>Enter Your Name Please:</label>
<input type="text"name=" name_entered" value='<?php echo $name; ?>'/>
<br><br>
<input type="submit" name="submitbutton" value="Submit"/>
</form>
<?php
if ($submitbutton){
if (!empty($name)) {
echo 'The name you entered is ' . $name;
}
else {
echo 'You did not enter a name. Please enter a name into this form     field.';
}
}
?>
0 голосов
/ 03 мая 2019

Я нашел исправление, которое работало на меня.По какой-то причине кнопка HTML-тег не работает правильно в моем случае, мне пришлось использовать входной тег типа submit, и у входного тега должно было быть назначенное значение.Спасибо за вашу помощь в этом всем.

0 голосов
/ 02 мая 2019

Пример простой формы

В приведенном ниже примере показана простая форма HTML с двумя полями ввода и кнопкой отправки:

 <html>
<body>

    <form action="welcome.php" method="post">
    Name: <input type="text" name="name"><br>
    E-mail: <input type="text" name="email"><br>
    <input type="submit">
    </form>

    </body>
    </html> 

Когда пользователь заполняет форму выше и нажимает кнопку отправкиКнопка, данные формы отправляются для обработки в файл PHP с именем "welcome.php".Данные формы отправляются методом HTTP POST.

Чтобы отобразить отправленные данные, вы можете просто отобразить все переменные.«Welcome.php» выглядит следующим образом:

<html>
<body>

Welcome <?php echo $_POST["name"]; ?><br>
Your email address is: <?php echo $_POST["email"]; ?>

</body>
</html>

Тот же результат может быть достигнут с помощью метода HTTP GET:

 <html>
<body>

<form action="welcome_get.php" method="get">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>

</body>
</html> 

и «welcome_get.php» выглядит следующим образом:

 <html>
<body>

Welcome <?php echo $_GET["name"]; ?><br>
Your email address is: <?php echo $_GET["email"]; ?>

</body>
</html>

GET против POST

И GET, и POST создают массив (например, массив (key1 => value1, key2 => value2, key3 => value3, ...)).Этот массив содержит пары ключ / значение, где ключи - это имена элементов управления формы, а значения - входные данные пользователя.

И GET, и POST обрабатываются как $ _GET и $ _POST.Это суперглобалы, что означает, что они всегда доступны, независимо от области видимости, и вы можете получить к ним доступ из любой функции, класса или файла, не делая ничего особенного.

$ _ GET - это массив переменных, передаваемых втекущий скрипт через параметры URL.

$ _ POST - это массив переменных, передаваемых текущему скрипту с помощью метода HTTP POST.Когда использовать GET?

Информация, отправленная из формы с помощью метода GET, видна всем (все имена и значения переменных отображаются в URL).GET также имеет ограничения на количество информации для отправки.Ограничение составляет около 2000 символов.Однако, поскольку переменные отображаются в URL-адресе, можно добавить страницу в закладки.В некоторых случаях это может быть полезно.

GET может использоваться для отправки нечувствительных данных.

Примечание: GET НИКОГДА не должен использоваться для отправки паролей или другой конфиденциальной информации!Когда использовать POST?

Информация, отправляемая из формы методом POST, невидима для других (все имена / значения встроены в тело HTTP-запроса) и не имеет ограничений на количество отправляемой информации..

Более того, POST поддерживает расширенные функциональные возможности, такие как поддержка двоичного ввода из нескольких частей при загрузке файлов на сервер.

Источник https://www.w3schools.com/php/php_forms.asp

...