PHP で凄く簡単に GET/POST 送信ができる関数

以前こちらの URL で GET/POST を簡単にできるコードを書きましたが、問題があるとのことで多くの指摘を頂きました。zaru さんに正しいコードを書いて頂きましたので下記の記事をご覧ください。

下記にコードを引用させて頂きます。いくらか稼働させた所 curl の方が安定していることが分かりましたので、こちらを引用させて頂きます。curl がインストールできない環境等では zaru さんの記事の別のコードを使用してください。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function wbsRequest2($method, $url, $params = array())
{
    $data = http_build_query($params);
    if($method == 'GET') {
        $url = ($data != '')?$url.'?'.$data:$url;
    }
 
    $ch = curl_init($url);
 
    if($method == 'POST'){
        curl_setopt($ch,CURLOPT_POST,1);
        curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
    }
 
    //curl_setopt($ch, CURLOPT_HEADER,true); //header情報も一緒に欲しい場合
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_TIMEOUT, 2);
    $res = curl_exec($ch);
 
    //ステータスをチェック
    $respons = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    if(preg_match("/^(404|403|500)$/",$respons)){
        return false;
    }
 
    return $res;
}

コメント

  1. hayajoさんのコメント

    ・$paramsの初期値をarray()に
    ・$content をNULLもしくは空文字で初期化
    ・METHODがGET|POST以外の場合の例外処理(もしくは不明なMETHODの場合はGETにする等)

    を入れると使い勝手がよくなると思います。

  2. tsuzukiさんのコメント

    12行目は
    $options['http']['content'] = $data;
    ですね。

    あと、私の環境ではパラメータがうまく渡せなかったので3行目も以下のように変えました。
    $data = http_build_query($params, ”, ‘&’);

  3. Knowledge base funcさんのコメント

    PHPのPOST、GET用クラス

    PHP で凄く簡単に GET/POST 送信ができる関数を作りました こんな記事がありました。こういうのはクラスにしておいたほうが後々使い勝手いいとおもいました。PHPよくわかんないけど。 常…

  4. blog.udzura.jpさんのコメント

    Ruby で凄く簡単に GET/POST 送信ができる関数を作りました

    Time to Read 30秒 Time to Write 30秒 使い方 (ry 1 p wbs_request(:GET, ‘http://blog.udzura.jp/’, :s => ‘Ruby’) 1 p wbs_request(:POST, ‘http://www.google.com/’, :q => ‘Ruby’) コード 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1…