[PHP-users 32093] php でPOSTでリダイレクト

Masaaki Suga suga @ tenrikyo.or.jp
2007年 5月 10日 (木) 09:39:58 JST


須賀です

phpでheader("Location: ・・・・・");
で,リダイレクトできますが
GETしかできません
POSTでリダイレクトしたいのですが

インターネットで調べたところ
以下のようなサンプルがありました

function http($url, $method, $headers, $post)
{
//     URLを分解 
    $URL = parse_url($url);
//     クエリー 
    if (isset($URL['query'])) {
        $URL['query'] = "?".$URL['query'];
    } else {
        $URL['query'] = "";
    }
//     デフォルトのポートは80 
    if (!isset($URL['port'])) $URL['port'] = 80;
//     リクエストライン 
    $request  = $method." ".$URL['path'].$URL['query']." HTTP/1.0\r\n";
//     リクエストヘッダ 
    $request .= "Host: ".$URL['host']."\r\n";
    $request .= "User-Agent: PHP/".phpversion()."\r\n";
//    Basic認証用のヘッダ 
    if (isset($URL['user']) && isset($URL['pass'])) {
        $request .= "Authorization: Basic ".base64_encode($URL['user'].":".$URL['pass'])."\r\n";
    }
//     追加ヘッダ 
    $request .= $headers;
//     POSTの時はヘッダを追加して末尾にURLエンコードしたデータを添付 
   if (strtoupper($method) == "POST") {
        while (list($name, $value) = each($post)) {
            $POST[] = $name."=".urlencode($value);
        }
        $postdata = implode("&", $POST);
        $request .= "Content-Type: application/x-www-form-urlencoded\r\n";
        $request .= "Content-Length: ".strlen($postdata)."\r\n";
        $request .= "\r\n";
        $request .= $postdata;
    } else {
        $request .= "\r\n";
    }
//     WEBサーバへ接続 
    $fp = fsockopen($URL['host'], $URL['port']);
//     接続に失敗した時の処理 
    if (!$fp) {
        die("ERROR\n");
    }
//     要求データ送信 
    fputs($fp, $request);
//     応答データ受信 
    $response = "";
    while (!feof($fp)) {
        $response .= fgets($fp, 4096);
    }
//     接続を終了 
    fclose($fp);
//     ヘッダ部分とボディ部分を分離 
    $DATA = split("\r\n\r\n", $response, 2);
//     リクエストヘッダをコメントアウトして出力 
    echo "<!--\n".$request."\n-->\n";
//     レスポンスヘッダをコメントアウトして出力 
    echo "<!--\n".$DATA[0]."\n-->\n";
//     メッセージボディを出力 
    echo $DATA[1];
}


ためしに,これを使って
http("http://www.yahoo.co.jp/","GET","","");
としてみましたが,
確かに,yahooのHPが表示されますが,相対パス指定の部分が
リンク切れになっています

どなたか,phpでPOSTするやり方のサンプルを教えていただけないでしょうか?

よろしくお願いします

 -------------------------------
 須賀正明:suga @ tenrikyo.or.jp
 -------------------------------



PHP-users メーリングリストの案内