От автора: POST сдал – POST принял! Наверное, служившие в армии подумают, что мы будем играть в войнушки. С армией у нас и так все в порядке, а вот с передачей данных в Сети не так все хорошо. Нужно знать, когда использовать метод POST в PHP, а когда GET.
Различия в примерах
Для начала создадим экспериментальную форму, с помощью которой будем тестировать оба метода. Именно формы чаще всего используются для сбора данных и пересылки их на сервер. Разметка простейшей:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<html> <head> <title></title> </head> <body> <form name="sample_form" method="get" action="chernovik.php"> <label>Представьтесь, пожалуйста: </label> </br> </br> <input type="text" size="25" name="fio" /></br> </br> <input type="submit" /> </form> </body> </html> |
Код обработчика:
1 2 3 4 5 |
<?php echo "Приветствую тебя, ".$_GET["fio"]."<br>"; ?> |
О прикладном протоколе HTTP много говорить не буду. Упомяну лишь, что он предоставляет несколько методов для указания того ресурса, к которому направлен запрос. Чаще всего для доставки информации на сервер используются передача методом POST в PHP или GET. Метод передачи прописывается в атрибуте веб-формы method.
Сначала GET, а потом POST
Сначала отправляем данные с помощью GET. Поместите разметку формы и обработчик по разным файлам. Хотя можно обойтись и одним, если не прописывать атрибут action. В этом случае обработка будет происходить в этом же файле.
Как видите, с помощью GET значения переменных передаются в URL. Что плохо, если вы пересылаете на сервер конфиденциальные данные. Теперь пробуем POST. В коде обработчика будет использовать глобальный массив _POST:
Мы убедились, что этот метод передает данные на сервер не через URL, а в теле запроса. Теперь разберемся, как с помощью PHP отправить POST методы.
Без форм
При передаче данных можно обойтись и без веб-форм. Следующий пример иллюстрирует, как достичь такого же эффекта средствами cURL. Думаю, разобраться вам не составит большого труда. Код первого скрипта:
1 2 3 4 5 6 7 8 9 10 |
<?php $seans = curl_init(); curl_setopt($seans, CURLOPT_URL, '//localhost/chernovik2.php'); curl_setopt($seans, CURLOPT_RETURNTRANSFER,true); curl_setopt($seans, CURLOPT_POSTFIELDS, "a=5&b=5"); $vozvrat_res = curl_exec($seans); echo $vozvrat_res; curl_close($seans); ?> |
Код обработчика:
1 2 3 4 5 |
<?php $s = $_POST['s']; $d = $_POST['d']; echo $s*$d; ?> |
Получаем результат – произведение переданных переменных:
Также для передачи параметров по ссылке методом POST в PHP можно использовать в форме код JavaScript. А на сегодня все – я свой пост сдал :).