

お世話になります。
PHPを用いてリダイレクトさせたいのですが、リダイレクト先にはHTTPリクエストのPOSTを用いて情報を送信させる方法を教えてください。
いろいろ調べたのですが、
curl関数やfsockopen関数では、POSTでリクエストして、レスポンスが返ってくるので、望むような方法が実現できません。
なぜ、リダイレクトさせたいかというと、リダイレクト先は違うhostなので、画像やcss、formなどがうまく表示・動作できないようになってしまうためです。
送信方法として、フォームによる送信を行いますと、クライアント側に情報を埋め込んで送信するため、セキュリティ的に問題がありますので、PHPから情報を飛ばしたいと考えております。
よろしくお願いします。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
受取側に手を入れることができないということであれば、残るは#1さんが#3で言われている方法しかないのかな、と思いました。
ただ、その方法は、恐らくですが、その先(処理&遷移後)のことを考えた場合に問題が出てくるような気もします。(「遷移したらそこには結果表示しかない、そこで作業終わり」であれば十分有効だろうとは思います)
もしもそうだとすると、私の最初の答えぐらいしか残っていません。
(以下、先の回答より微妙に丁寧に書いてみました)
1)クライアント(フォーム等)
↓
2)サーバA:PHPにてjavascript生成
↓ そのjavascript(を使用するhtmlに)にrediredt
3)サーバA:生成したjavascriptをjavascriptのOnloadなどで動作させ、そのままsubmit(POST)を行う
↓(POST)
4)サーバB:(処理、表示)
難点としては、3の時点でクライアントに値が渡ります。
が、少なくとも普通はユーザーは3という処理があること自体意識することはほぼないでしょうし、また、業務アプリでも実際にこういった処理はよく見かけます。(だから最初に思い付いた訳ですが)
ついでに。もう1つ方法がありました。
クライアント(フォーム等)→ javascriptにて値を取得・生成などして、そのままjavascriptにてPOST
↓(POST)
サーバB:(処理、表示)
これにすると、懸念されている問題はほぼ解決するのではないかと思います。
但しこれは、PHPにて処理されようとしてることの全てをjavascriptにて行うことになりますので、作業としては面倒なことになるかも知れませんし、また環境や制約(Ajaxが不可であるなど)によっては更に難しいことになるかも知れません。また処理によっては、その処理中にDBへのアクセスが多い場合等はレスポンスの悪化も懸念されるので、その部分は別途ストアドにする等の工夫も必要になるかも知れません。
更についでに言うと、上記2つの方法をミックスさせるようなやり方もアリかと思います。(1つめの方法の2のjavascript生成の時にAjaxを使う、など)
もし他に良い方法が出てこないようでしたら、そうなると、あとは工数・時間と相談して、どこでどのように妥協するか(または理解を求めるか)、じゃないでしょうか。
No.3
- 回答日時:
#1です。
なるほど。#2の方の回答で、ちょっと見えたような気がします。別のサイト(サイトXとする)にリダイレクトしたい。ただし、その際に、最初にクライアントからPOSTで渡されたデータを、サイトXに引き継いで渡したい。
で、「『サイトXにPOSTでデータを投げるFORM』を含んだページを作って返し、ユーザにsubmitさせるなり、JavaScriptで自動でSubmitボタンを押させるなりして、サイトXに接続する」という方法は、考えついたが、採用したくないと言うことですね。
curl関数やfsockopen関数でサイトXにPOSTして、返った結果HTMLをそのままクライアントに返すのでは、
>画像やcss、formなどがうまく表示・動作できないようになってしまうためです。
と言うことが問題なのであれば、返った結果HTMLのHEADに、<base href="サイトXのURL"> を埋め込めば、そのHTML中の相対URLはすべてbaseで指定したURLからの相対と見なされるので、画像・CSSなどもそのままで正しく表示されるはずです。
サイトXがもし他人のサイトであれば、そのHTMLを自サイトの物であるかのように返すことについては、権利関係の問題があるかもしれないので、クリアしてください。
No.2
- 回答日時:
ご質問の「リダイレクト」を「遷移」に置き換えると意味が通じますので、その理解で回答してみます。
違ったらごめんなさい。結論から言いますと、されたいであろうことは、(多分)無理です。
多分というのは、私の知る限りにおいて、という意味です。他に方法があるのであればどなたかお願いします。>どなたか
以下は参考までに。
私がそれ(と同じように見える動作)を行いたい場合は、
クライアント(フォーム等)
↓
サーバA:PHPにてjavascript生成
↓(javascriptにてPOST)
サーバB:(処理、表示)
とするか、
クライアント(フォーム等)
↓
サーバA:PHPにてredirect
↓(GET)
サーバB:処理を行い、redirectまたはスクリプトか何かでPOST
↓
サーバB:(表示)
のどちらかにすると思います。(直接POST&遷移させるのではなく間に何らかのプログラムを1つ噛ませます)
また、処理的に可能であれば(POST後の処理がデータベース更新等の処理で、結果表示は現在のデータ表示に過ぎない場合等)、
クライアント(フォーム等)
↓
サーバA:cURLなどでPOST処理後、redirect
↓(POST) ↓
サーバB:(処理) (→) (表示)
とすると思います。
ご回答ありがとうございます。
リダイレクトのところを、遷移という意味で使用してしまいました。
上記のように、なんらかのプログラムをひとつはさまなければ無理なのですね。
こちらの説明が足りなくて申し訳ないのですが、サーバBにあたるところが、他のサイトのシステムなので上記のような処理をすることができません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(ブログ) Brogger独自ドメインから独自ドメインへ変更する 1 2022/09/22 13:21
- その他(開発・運用・管理) 【至急】.htaccessによるディレクトリ単位でのリダイレクト 2 2023/08/10 13:46
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- Oracle TOPページ以外の、301リダイレクトの記述設定について 1 2022/08/12 17:14
- PHP $_SESSIONに渡した後はそのまま使っても問題ありませんか? 3 2022/11/08 22:17
- サーバー 301リダイレクトができる条件を知りたいです 2 2022/10/25 11:21
- Outlook(アウトルック) outlookでのメール自動リダイレクトができません 2 2022/05/09 20:44
- その他(プログラミング・Web制作) httpからhttpsへのリダイレクトについて質問です。 1 2022/03/24 14:35
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
- その他(プログラミング・Web制作) 301リダイレクトについて 1 2022/09/30 19:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Content-Typeが機能していない?
-
PHP8でWarning:Undefined varia...
-
composerをインストールしたい...
-
PHPのエラーの解消法について教...
-
グローバルスコープはありますか?
-
phpの問い合わせフォームを作っ...
-
$filePath = './user_img/' . $...
-
PHPでユーザー情報を入力して簡...
-
PHP8を使うと、大量のWarningが...
-
php 入力画面から確認表示画面...
-
php 完了画面の送信メールのコ...
-
PHPで入力フォームでデータを確...
-
csvファイルについて教えて下さ...
-
文字列を段落で分ける方法を教...
-
PHPでMysqlにデータがあるかど...
-
MySql PHP 2つのテーブルをJOI...
-
どうして送信されないのでしょ...
-
phpにおいて$xを計算式の文字列...
-
クラス
-
【PHP/MySQL】コード上で生成...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ASP.NET(VB)VBソースからJavas...
-
sleepの負荷
-
呼び出し元のURLを知りたいのです
-
PHPにてHTMLページ表示とは別プ...
-
ブラウザ閉じたらサーバー処理...
-
PHPで15桁程度のユニークコード...
-
PHPで一定時間が経過すると処理...
-
php ob_flushが全く動作しない
-
読み込み中に「Now Loading」を...
-
JSTLを利用してJavascriptの結...
-
処理中...と表示するには
-
include 再読み込み
-
PHPでソケットの使いまわしに問...
-
JavaScriptソースをphpで書くに...
-
jQueryのAjaxで通信の途中結果...
-
長時間かかるPHPプログラムの処...
-
会員専用ページへのログインで...
-
HTML、CGI、Java、JavaS...
-
PHPで、IE の「警告 : ページの...
-
dreamweaverでFTP接続ができな...
おすすめ情報