PHPの標準関数でPOSTする方法

PHPでPOSTを送信するとなると、Pearのライブラリを使った方法が一般的だと思いますが、Pearなんて大嫌いだという人もいるかと思います。そこで、PHPの標準関数だけでPostを実行する関数を作ってみました。間違ってるよとか、つかいづれーとか、もっと言い書き方があるよ、なんて意見があればはてぶでがんがん叩いていただけると幸いです。

関数の使い方
第1引数 投げ先のURL
第2引数 投げるデータの連想配列
戻り値 レスポンスHTML

function post($url, $data = array()){
—-foreach($data as $key => $value){
——–$data[$key] = mb_convert_encoding($value, ‘utf-8’);
—-}
—-$query = http_build_query($data, ”, ‘&’);
—-$pattern = “/^(http):\/\/([^\/]+)\/.*$/i”;
—-if(!preg_match($pattern, $url, $match ))return false;
—-$domain = $match[2];
—-$fp = fsockopen ( $domain, 80 );
—-if ( !$fp ) {
——–echo(‘Connection failed’);
—-} else {
——–$str =
——–“POST ” . $url . ” HTTP/1.0\r\n”.
——–“Host: ” . $domain . “\r\n”.
——–“Content-Type: application/x-www-form-urlencoded\r\n”.
——–“Content-Length: ” . strlen($query) . “\r\n”.
——–“\r\n”.
——–$query.
——–“\r\n”;
——–fwrite($fp, $str);
——–$ret = ”;
——–while($buff = fread($fp, 1024))$ret.=$buff;
——–return $ret;
—-}
}

※Wordpressでうまくインデントを表現できなかったので、ハイフンを大量に挿入しています。ソースコードをコピペする際は、”—-“をタブか半角スペース4つに置換してください。

すごい改良されたコードがアップされてました。httpsなどにも対応した、より実用的な関数に改良されています。

[php][http][雑談]Re:PHPの標準関数でPOSTする方法

実は stream_context_create なんて便利な関数があることを知りませんでした。勉強不足ですね。精進します。

こうやって意見をもらえることで、一気に知識の幅が広がります。まだまだ未熟ですが、積極的に情報発信していこうと思います。

Facebookページもよろしくお願いします

CATEGORIES eラーニングby.a.takeuchi11 Comments2009.11.02
TAGS , ,  
記事の投稿者
a.takeuchi a

Facebook comments:

コメントをどうぞ

Eメールアドレスは公開されません。

Trackback URL

管理者の承認後に表示します。無関係な内容や、リンクだけで意見や感想のないものは承認しません。

  • 製品・サービス
    PC、iPhone対応のeラーニングシステム。20名まで無料でASPサービスを利用できます
    PC、iPhone対応のeラーニング学習管理システム(LMS)【SmartBrain】
    http://smartbrain.info/
    PC、iPhone対応のeラーニングシステム。ユーザ数無制限のASPコースをご用意。


    eラーニングポータルサイト【elearning.co.jp】
    http://elearning.co.jp/
    eラーニング専門企業(株)キバンインターナショナルの製品を紹介しています。


    コンテンツビジネス支援パック
    http://contentsbank.jp/

    Ustream配信、動画コンテンツ制作、セミナーにご利用いただけるレンタルスタジオ
    Ustreamレンタルスタジオ「パンダスタジオ」
    http://pandastudio.tv/

    eラーニング専門企業(株)キバンインターナショナルのスタッフが、eラーニングに関する情報・最新事情をBlogでご紹介。月50本程度の情報発信を行っています。
    ブログ「blog.eラーニング.co.jp」
    http://blog.elearning.co.jp/

  • アーカイブ
  • カテゴリー
  • Amazon
  • タグ