Дата публикации: 25.01.2026

Все методы отправки POST из PHP.


Я всего лишь хотел дернуть данные с сайта за авторизацией и что получилось.

file_get_contents

file_get_contents - с его стримами, как оказывается метод позорный и много серверов тупо легко могут блокировать такой запрос к страницам. Для простой загрузки проверенных сайтов - метод просто незаменим. Очень прост и удобен. Вот таким одностраничником можно загрузить данные POST запросом:
$result = file_get_contents($url, false, stream_context_create(array(‘http’ => array(‘method’ => ‘POST’,'header’ => ‘Content-Type: application/xml’,'content’ => $xml))));
Взято из http://jkeks.ru/jkeks.ru/archives/3974 Отформатированный вариант:  

pear:http_request

<?php require_once "HTTP/Request.php"; $req =& new HTTP_Request("http://www.php.net"); $req->setMethod(HTTP_REQUEST_METHOD_POST); $req->addPostData("Foo", "bar"); if (!PEAR::isError($req->sendRequest())) { $response1 = $req->getResponseBody(); } else { $response1 = ""; } $req->setMethod(HTTP_REQUEST_METHOD_GET); $req->setURL("http://pear.php.net"); $req->clearPostData(); if (!PEAR::isError($req->sendRequest())) { $response2 = $req->getResponseBody(); } else { $response2 = ""; } echo $response1; echo $response2; ?>
Уроццкий метод, просто бесит смотреть в такую парашу. Конечно я бы мог причесать этот взятый из отсюда код: http://pear.php.net/manual/pl/package.http.http-request.intro.php Но и так видно, работает, но выглядит как отстой.

Pecl_Http

Что это за хрень - какое-то странное расширение PHP, для которого я примеров-то найти не смог, зато на php.net ГИГАНСКИЙ МАНУЛИЩЩЕ. http://php.net/manual/en/book.http.php Впрочем нашел кое-что поглядеть, надеюсь сами дадите примеров еще:
$request = Request::factory($url);
$request->method('POST');
$request->headers($header);
$request->post($post_params);
$request->execute();

Curl

Алелуйа ! Самый мировой метод, который используется в 90% случаев, но говорят и то не всегда работает.
<?php if( $curl = curl_init() ) { curl_setopt($curl, CURLOPT_URL, 'http://mysite.ru/receiver.php'); curl_setopt($curl, CURLOPT_RETURNTRANSFER,true); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, "a=4&b=7"); $out = curl_exec($curl); echo $out; curl_close($curl); } ?>
Код CURL безобразен как моя задница, что бы ни говорили.

Сокеты

Сразу задавлю примером:
$fp = fsockopen($url, 80, $errno, $errstr, 30); if (!$fp) { echo "ERROR: $errstr ($errno)<br />\n"; $error="ERROR: $errstr ($errno)"; } else { $out = "GET / HTTP/1.1\r\n"; $out .="User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.13 (KHTML, like Gecko) Chrome/24.0.1284.0 Safari/537.13\r\n"; $out .= "Host: $url\r\n"; $out .= "Referer: http://jkeks.ru"; $out .= "Connection: Close\r\n\r\n"; $out .= "\r\n"; fwrite($fp, $out); while (!feof($fp)) { $src.=fgets($fp, 128); } fclose($fp); }
Это пример из жизни, Уродливее некуда, зато работает везде и всегда, никаких библиотек не надо, прямо слезы на глазах. Даже PHP4 хватит.

Snoopy

Прекрасный в идее класс Snoopy. Обновление 2005-2008 годы. Но все делается более менее красиво:
<?php include('Snoopy.class.php'); // подключаем «Snoopy» $snoopy = new Snoopy(); // создаём объект /* создаём массив «$post_array» */ $post_array = array(); $post_array['city'] = 'Odessa'; $post_array['country'] = 'Ukraine'; /* cоздаем Cookies */ $snoopy->cookies['last_visit'] = 1298295000; $snoopy->cookies['nickname'] = 'Mirgorod'; $snoopy->submit('http://test.ru/submit.php', $post_array); echo $snoopy->results; // выводим результат ?>
Я бы его взял, тем более использует сокеты (восновном), код не смотрел, бабка нашептала.

Multirequest

Еще один класс. https://github.com/barbushin/multirequest Говорят чем-то покруче чем Snoopy. Не првоерял , код смотрел, документации нет. Интересно но времени жалко.

Zend_http_client/Zend:http

Документация есть даже на Русском кое что. Большой, всемогущий, скучный.

 Buzz – Simple HTTP Request Library

Buzz еще одна библиотечка для  HTTP запросов. Вот пример кода:
1 $request new Buzz\Message\Request('HEAD''/''http://google.com');
2 $response new Buzz\Message\Response();
3
4 $client new Buzz\Client\FileGetContents();
5 $client->send($request$response);
6
7 echo $request;
8 echo $response;
Не смотрел еще и не разбирался, но вы обязательно поглядите.

Requests – Easy HTTP Requests

Requests библиотека позволит делать легко  HTTP запросы. Если вы (как и я) никак не можете запомнить синтаксис Curl,то эта библиотека для вас, пример кода:
01 $headers array('Accept' => 'application/json');
02 $options array('auth' => array('user''pass'));
03 $request = Requests::get('https://api.github.com/gists'$headers$options);
04
05 var_dump($request->status_code);
06 // int(200)
07
08 var_dump($request->headers['content-type']);
09 // string(31) "application/json; charset=utf-8"
10
11 var_dump($request->body);
12 // string(26891) "[…]"
С этой библиотекой можно делать HEAD, GET, POST, PUT, DELETE и PATCH HTTP запросы, отправлять файлы и параметры в массивах и получать полный доступ к данным ответа.       Заключение: Кажется этих способов море, однако чем-то мне нравится Snoopy. Ну оно и понятно, название красивое.. Вот теперь можете бить.

Telegram канал о биржах ссылок
Видеочат рулетка