PHPの質問です。

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

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

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

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2006/05/13 10:55:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:uenoshin No.1

回答回数9ベストアンサー獲得回数2

ポイント27pt

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させるようにしてはいかがでしょうか。

id:soyuz11 No.2

回答回数22ベストアンサー獲得回数1

ポイント27pt

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();

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

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

id:mgaki

早速試してみます!

ありがとうございました

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

可能なのでしょうか?

2006/05/10 10:10:23
id:soyuz11 No.3

回答回数22ベストアンサー獲得回数1

ポイント26pt

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

POST処理

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

ob_end_clean(); //メモリ開放

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

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

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

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません