【PHP】file_get_contentsでPOSTデータの送信を行う
PHPのプログラムでWebAPIなどにアクセスする時にfile_get_contentsを使用することがあります。
この時にGETではなくPOST送信にてパラメータを送信する必要がある時があるので今回はそのメモ。
サンプル
PHPマニュアルにあるfile_get_contentsを参考にさせて頂きました。file_get_contents
送信プログラム
メインとなる送信プログラムです。<?php //POSTデータ $data = array( "param1" => "data1", "param2" => "data2" ); // URLを指定 $url = "http://localhost/test/post.php"; // POST用関数 function http_post ($url, $data) { $data_url = http_build_query ($data); $data_len = strlen ($data_url); return array ( 'content'=> file_get_contents ( $url, false, stream_context_create ( array ('http' => array ( 'method'=>'POST', 'header'=>"Content-Type: application/x-www-form-urlencoded\r\nContent-Length: $data_len\r\n", 'content'=>$data_url) ) ) ), 'headers'=> $http_response_header ); } // 送信 $result = http_post($url, $data); ?> 受信データ<br /> <pre> <?php var_dump($result);?> </pre>$dataを変えると送信するPOSTの値が変更できます。
$urlをPOST送信したい先に変更してお使いください。
受信プログラム
上記の送信プログラムのテストのための受信プログラムです。<?php var_dump($_POST);?>
結果
受信プログラムが出力した結果をfile_get_contentsが取得し、出力を行った結果。contentにはfile_get_contentsの返り値が入ります。headersにはアクセスした際のヘッダー情報が入るようになっております。
array (size=2) 'content' => array (size=2) 'param1' => string 'data1' (length=5) 'param2' => string 'data2' (length=5) 'headers' => array (size=7) 0 => string 'HTTP/1.1 200 OK' (length=15) 1 => string 'Date: Tue, 23 Jun 2015 05:11:57 GMT' (length=35) 2 => string 'Server: Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7' (length=53) 3 => string 'X-Powered-By: PHP/5.4.7' (length=23) 4 => string 'Content-Length: 321' (length=19) 5 => string 'Connection: close' (length=17) 6 => string 'Content-Type: text/html' (length=23)
file_get_contentsって調べると色々出来て覚えきれないですね。
«前の記事:【Google Maps API】地図上に円を表示・削除をするIT業界が欲しいのは開発が出来る人!プログラミングだけでは・・・:次の記事»
Comments
はずかしい。。。
http://d.hatena.ne.jp/ryster/20070907/1189148449
こちらの記事のパクリでしょうか?
メモに取っていた内容と似ています。
こちらの記事を参考にしていたのかも知れません。
なので、記事の内容を同一のことが出来るものですが、別の書き方に直させて頂きました。