- ベストアンサー
PHPでトラックバック機能 HTTPリクエスト
- PHPを使用してブログシステムを作成する際のトラックバック機能についての質問です。
- トラックバックの仕組みについては理解できたが、具体的な実装方法が分からない。
- HTTPリクエストでPOSTする方法について知りたい。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
『HTTPリクエストでPOSTする』と言う所がポイントです。 つまり、通常Web上でサーバ(サイドスクリプト)として振舞っているPHPを、 クライアント、つまりWebブラウザとして動作させる必要が有ります。 その為にどうすれば良いかと言うと、PHPにはfsockopenやsocket等の ネットワーク関数が用意されていますので、これを利用します。 fsockopen の例 <?php // ソケット接続を開く $fp = fsockopen("www.foo.com", 80, $errno, $errstr, 30); if ( !$fp ) { echo "$errstr ($errno)<br />\n"; }else { // ヘッダ生成 $header = "POST http://www.hoge.hoge/mt-tb.cgi/5 HTTP/1.1\r\n"; $header .= "Content-Type: application/x-www-form-urlencoded\r\n"; $header .= "title=Foo+Bar&url=http://www.tbtest.com/&excerpt=My+Excerpt&blog_name=Foo\r\n\r\n"; // ヘッダ送信 fwrite($fp, $header); // レスポンス取得 while ( !feof($fp) ) { echo fgets($fp, 512); } fclose($fp); } ?> socket の例 <?php // 送信ヘッダ作成 $header = "POST http://www.foo.com/mt-tb.cgi/5 HTTP/1.1\r\n"; $header .= "Content-Type: application/x-www-form-urlencoded\r\n"; $header .= "title=Foo+Bar&url=http://www.tbtest.com/&excerpt=My+Excerpt&blog_name=Foo\r\n\r\n"; // ソケット生成 $socket = @socket_create(AF_INET, SOCK_STREAM, 0) or die("ソケットの生成に失敗しました。\n"); // 接続開始 @socket_connect($socket, $host, $port) or die("接続に失敗しました。\n"); // ヘッダ送信 @socket_write($socket, $header, strlen($in)) or die("ヘッダ送信に失敗しました。\n"); // レスポンス取得 $out = @socket_read($socket, 1048576) or die("レスポンスの取得に失敗しました。\n"); echo $out; // ソケット破棄 socket_close($socket); ?> 以上、ご参考までに。 http://jp2.php.net/manual/ja/function.fsockopen.php http://www.php.net/manual/ja/ref.sockets.php
お礼
返事が遅くなってしまい申し訳ありませんでした。 ご回答ありがとうございます。 教えていただいた方法にて、試してみましたら、 思っていたようなHTTPリクエストができました!! ただ、なぜかtitleがありません、というエラーがもどってきしまいましたが。 やり方はこれであってるようなので、もう少し試行錯誤してみようと思います。 ありがとうございました。