PHPの質問です。

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

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

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

回答の条件
  • 1人2回まで
  • 登録:2006/05/06 10:54:11
  • 終了:2006/05/13 10:55:03

回答(3件)

id:uenoshin No.1

uenoshin回答回数9ベストアンサー獲得回数22006/05/06 14:32:05

ポイント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

soyuz11回答回数22ベストアンサー獲得回数12006/05/07 10:12:12

ポイント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

soyuz11回答回数22ベストアンサー獲得回数12006/05/10 16:55:08

ポイント26pt

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

POST処理

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

ob_end_clean(); //メモリ開放

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

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

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

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません