Довольно часто встречающийся вопрос – как средствами php отправить POST запрос (и обработать ответ). И традиционные ответы на этот вопрос:
- curl (самый очевидный ответ, к сожалению не везде доступный)
- fsockopen (самый распространённый способ)
- http (extension появился сравнительно недавно и советуют его нечасто)
Спешу поделиться другим способом:
$postfields = http_build_query( array ('var1' => 'value 1', 'var2' => 'value 2',)); $opts = array('http' => array( 'method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => $postfields, ) ); $context = stream_context_create($opts); $result = file_get_contents('http://example.com/action.php', false, $context);
Как видно – не нужны никакие дополнительные extension-ы и в отличии от способа с fsockopen большую часть “грязной” работы возьмёт на себя stream_context_create.
Подсмотрено вон там.
P.S.
Название поста глупое, но другого в голову не идёт. ;o)
file_post_contents
Очень удобно когда не хочется париться с сокетами.
Возьмем на заметку:)
Действительно удобно.
Надо будет, наверное, прикрутить к своему компоненту Browser
http://php.southpark.com.ua/2007/10/14/browser-komponent-dlya-cakephp/
Биг сенкс оч время с экономил