Использование метода POST в форме PHP
Данные POST передаются через форму и "публикуются" на веб-сервере в виде данных формы. Данные POST кодируются так же, как и данные GET, но обычно не видны пользователю в стандартных браузерах.
В большинстве форм используется метод post, поскольку он "скрывает" данные формы от пользователя и не загромождает URL-адрес в адресной строке. Обратите внимание, что методы GET и POST одинаково безопасны.
Так же легко, как пользователь может манипулировать данными GET в URL, то же самое можно сделать и с данными POST. Вы всегда должны предполагать, что пользователь может отправлять любую форму и данные из формы, которые он хочет, и обрабатывать данные соответствующим образом. Не доверяйте пользовательскому вводу, будь то из GET или из POST!
Доступ к данным POST осуществляется с помощью массива $_POST в PHP.
<?php
echo("Имя: " . $_POST['name'] . "<br />\\n");
echo("Фамилия: " . $_POST['surname'] . "<br />\\n");
?>
<form action="form.php" method="post">
<p>Имя: <input type="text" name="name" /></p>
<p>Фамилия: <input type="text" name="surname" /></p>
<input type="submit" name="submit" value="Отправить" />
</form>
Использование isset()
Вы можете использовать функцию isset() для любой переменной, чтобы определить, была ли она установлена или нет. Вы можете использовать эту функцию для массива $_POST, чтобы определить, была ли переменная опубликована или нет. Это часто применяется к значению кнопки отправки, но может быть применено к любой переменной.
<?php
if(isset($_POST['submit'])
{
echo("Имя: " . $_POST['name'] . "<br />\\n");
echo("Фамилия: " . $_POST['surname'] . "<br />\\n");
}
?>
<form action="form.php" method="post">
<p>Имя: <input type="text" name="name" /></p>
<p>Фамилия: <input type="text" name="surname" /></p>
<input type="submit" name="submit" value="Отправить" />
</form>
Приведенный выше код отобразит отправленные значения только в том случае, если была нажата кнопка Отправить.
Могу ли я использовать GET и POST на одной странице?
GET и POST занимают разные места в памяти сервера, поэтому при желании к ним можно получить доступ на одной странице. Одним из вариантов использования может быть отображение разных сообщений в форме в зависимости от того, что содержится в строке запроса.
https://mysite.ru/form.php?lang=russian пример передачи в форму GET запроса совместно с POST
<?php
if(isset($_POST['submit']) {
if($_GET['lang'] == "russian") {
echo("Имя: " . $_POST['name'] . "<br />\\n");
echo("Фамилия: " . $_POST['surname'] . "<br />\\n");
} else if($_GET['lang'] == "english") {
echo("First name: " . $_POST['name'] . "<br />\\n");
echo("Last name: " . $_POST['surname'] . "<br />\\n");
}
?>
<form method="post">
<p>First name: <input type="text" name="firstname" /></p>
<p>Last name: <input type="text" name="firstname" /></p>
<input type="submit" name="submit" value="Submit" />
</form>
Вместо использования массивов GET и POST вы также можете использовать массив $_REQUEST, который будет содержать объединенное содержимое данных. Если переменные GET и POST имеют одинаковые имена, приоритет будет отдан POST. Рекомендуется не делать этого без крайней необходимости, потому что это может привести к путанице, и лучше всего четко представлять, откуда поступают данные.
Еще одна вещь, на которую следует обратить внимание: action в форме теперь отсутствует. Технически, это недопустимый HTML-код. Однако, если не вводить action, браузеры будут считать, что форма отправляет сообщение сама себе. Это важно, потому что это также сохранит строку запроса при отправке формы (часть ?lang=russian). Вы можете использовать серверные переменные, такие как $_SERVER['PHP_SELF'] и $_SERVER['QUERY_STRING'], для создания значения действия.
Комментарии
Для того чтобы оставить свое мнение, необходимо зарегистрироваться на сайте