dimarina.ru

html, css и javascript1   Разное1   Рецепты программирования на PHP или практические советы по программированию7   Управление проектом1  

 

Рецепты программирования на PHP или практические советы по программированию → Отправляем данные формы автоматически методом POST

Практическая необходимость в использовании автоматической отправки данных возникает не так часто, тем не менее, лично я, не раз убеждался в полезности этой функции. Например, если требуется переслать данные между двумя несвязанными серверами. Я использовал этот скрипт, чтобы связать воедино два сервера работающих под разными операционными системами Windows / UNIX и базами данных MS SQL / MySQL. Этим методом можно переносить бинарные или длинные файлы между серверами, например, картинки. В общем, полезностей весьма много, особенно если говорить про полностию автоматизированные веб-сервисы.

Этот метод также позволяет проделывать весьма дурные штучки. Например, постить миллион сообщений в разные форумы в автоматическом режиме. Кстати, капчи довольно неплохо защищают форумы от автоматических публикаций, но и против них есть пути обхода. Об этом поговорим в другой раз. Можно логинится в защищенные паролем зоны сайтов и брать оттуда информацию, подделывать cookies и реферреры, и много других злодейств.

Резюмируя скажу, что в серьезном автоматизированном веб-сервисе скорее всего пригодится функция автоматического POST'а.

Ниже приведен скрипт, осуществляющий отправку данных методом POST. Метод POST, в отличие от метода GET, посылает данные на сервер не в строке запроса (которая как правило ограничена в размере), а в области данных, после HTTP заголовка. Передача нескольких переменных аналогична методу GET: группы имя=значение объединяются при помощи амперсанда. Кодировать массив удобнее всего через встроенную функцию http_build_query.

Кстати, аналогичные функции есть уже встроенные, например, в пакет curl.

1 //передает массив $data методом POST
2 function _post($host,$path,$data) {
3     $res FALSE;
4     if(!$fp fsockopen($host80$errno$errstr30)) return $errstr." ".$errno;
5     $edata http_build_query($data)."\r\n\r\n";
6     $headers "POST ".$path." HTTP/1.1\r\n";
7     $headers.= "Host: ".$host."\r\n";
8     $headers.= "Content-type: application/x-www-form-urlencoded\r\n";
9     $headers.= "Content-Length: ".strlen($edata)."\r\n";
10     $headers.= "Connection: Close\r\n\r\n";
11     fwrite($fp$headers.$edata);
12     while (!feof($fp)) $res .= fgets($fp1024);
13     fclose($fp);
14     return $res;
15 }
16
17 $data = array(
18     "pic" => "GIF89...some binary data..."
19     ,"width"=>12
20     ,"height"=>34
21 );
22 echo "Ответ сервера: "._post("domain.ru","somedir/index.html",$data);

Если надо проанализировать как сервер воспринял переданную ему информацию, то необходимо "разобрать" ответ сервера. Например, так:

1 $response _post("domain.ru","somedir/index.html",$data);
2 if(preg_match("/HTTP\/1\.1 200 OK/",$response)) echo $response;
3 else echo "Ошибка: ".$response;

Комментарии:

04.09.2017 → Здравствуйте! Вас интересуют клиентские базы данных для продажи Ваших товаров и услуг? написал:
Здравствуйте! Вас интересуют клиентские базы данных для продажи Ваших товаров и услуг? Здравствуйте! Вас интересуют клиентские базы данных для продажи Ваших товаров и услуг? http://w.w.w/

21.07.2016 → Jacklynn написал:
Wow jongens wat een prachtige omgeving!!!Chris?!…Je liet me schrikken man op die foto met dat ij)ng…gajestah!!!…:sDat dorpje snap ik…zou ik ook naartoe gaan…sprookjesachtig mooi…:)

14.07.2015 → Tan написал:
That's a cunning answer to a cheanllging question http://cmovalcxmyi.com [url=http://hmhdumopi.com]hmhdumopi[/url] [link=http://wyworufny.com]wyworufny[/link]

12.07.2015 → Ecka написал:
Keep it coming, <a href="http://yyzcrvf.com">wrirste,</a> this is good stuff.

10.07.2015 → Ethica написал:
With all these silly westsbei, such a great page keeps my internet hope alive. http://bnhgziuid.com [url=http://dbuxeeoxp.com]dbuxeeoxp[/url] [link=http://dvtzkntkxv.com]dvtzkntkxv[/link]

08.07.2015 → Jory написал:
<a href="http://wpyeackno.com">Aprtaenply</a> this is what the esteemed Willis was talkin' 'bout.

07.07.2015 → Enzo написал:
Which came first, the problem or the soinltou? Luckily it doesn't matter.

13.11.2014 → baidu написал:
Отправляем данные формы автоматически методом POST good articles [url=http://www.baidu.com]baidu[/url]

19.10.2012 → lfebagzuawa написал:
umkc49 , [url=http://ihufocosuwia.com/]ihufocosuwia[/url], [link=http://slztszaorwxu.com/]slztszaorwxu[/link], http://zokjmbzqtlrk.com/

16.10.2012 → jjdlef написал:
LQ4lka <a href="http://dlllphqpfdnz.com/">dlllphqpfdnz</a>

15.10.2012 → zzayawmuso написал:
sOEK2b , [url=http://bffmhsjysehj.com/]bffmhsjysehj[/url], [link=http://eufxgiqzjmhj.com/]eufxgiqzjmhj[/link], http://lheedjpvjgli.com/

14.10.2012 → wvfbtf написал:
3oimVP <a href="http://hnjsuuprfyyc.com/">hnjsuuprfyyc</a>

14.10.2012 → Camila написал:
That's an expert answer to an interesting quetoisn

Написать комментарий





Включите отображение картинок в браузере
Число на картинке: