人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPの質問です。
header(”location〜”)
を利用して、
変数の値をPOSTで渡す、リダイレクト処理を行いたいと考えています。

location先は他サーバのphpファイルですが、POSTのみしか受け付けてくれないので、
GETはもちろん、セッションやクッキーによる変数渡しもできません。

perlだとHTTPクラスを利用すれば可能ということがわかったのですが、phpでも同様のことができるのでしょうか?

●質問者: mgaki
●カテゴリ:コンピュータ インターネット
✍キーワード:HTTP Perl PHP クッキー クラス
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● uenoshin
●27ポイント

http://www.faqs.org/rfcs/rfc2616.html

これの 10.3.3 302 Found によりますと GET/HEAD以外によるリクエストを自動的にリダイレクトさせることは制限されています。

さらに10.3.3章のNote:を参照いただきたいのですが、多くの既存ブラウザは302受信の際、303を受信したかのようにPOSTをGETに代えて自動的にリダイレクトしています。

従いましてご要望の動作を実現するスタンダードな方法はおそらく存在しないことかと思われます。

よろしければJavaScriptか、HTMLのFormをはさんでPOSTさせるようにしてはいかがでしょうか。


2 ● soyuz11
●27ポイント

PHPのcurl関数ライブラリを使えば簡単に実装できます。

$ch = curl_init('送信先サーバURI');

//ヘッダ作成

$header = "POST 【DOCUMENT_ROOT以下の送信先ファイルパス】 HTTP/1.0\r\n"

. "Host: 【送信先サーバ】\r\n"

. "Content-Type: text/xml; charset=【エンコーディング】\r\n"

. "Content-Length: ".strlen($【送信したいデータ】)

. "\r\n\r\n";

//送信先のサーバにエンコーディングを合わせる

$header = mb_convert_encoding($header,'【送信エンコーディング】','【内部エンコーディング】');

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $header.【送信したいデータ(変数に格納済)】);

curl_exec($ch);

curl_close($ch);

ob_start();

などで標準出力をキャプチャすれば、

実行結果がわかりますよ。

◎質問者からの返答

早速試してみます!

ありがとうございました

あと1つ聞きたいのですが、POSTで変数を送った結果をfile_get_contents()したりとかも

可能なのでしょうか?


3 ● soyuz11
●26ポイント

ob_start(); //標準出力を抑制した中で

POST処理

$result=ob_get_contents(); //バッファを格納

ob_end_clean(); //メモリ開放

上記手順で実行結果(相手先サーバからのレスポンス)

が変数$resultに格納できますので

その中身をチェックすれば成否を確かめられると思います。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ