header('Location: http://www.example.com/');
PHPによる上記リダイレクト処理を、ブラウザ側で拒否できるような機能は存在するのでしょうか?
そもそもこのリダイレクト処理というのはサーバサイドで動いているものなのでしょうか?
仕組みがよくわかりません。
たとえばDBにデータを登録後、リダイレクトでメール送信処理ページへ飛ばし、ユーザに登録内容をメールで送る、ということをしても問題ないのでしょうか?
とりあえず画面遷移を拒否される可能性があるかないかだけでも教えてください。
No.1
- 回答日時:
>リダイレクト処理
まぁリダイレクト自体が、「うちじゃないよよそ行ってくれ」という宣言にすぎないので
いうことを聞くかどうかはブラウザ次第ですね。
たいていのブラウザはまじめにいうことを聞くでしょうけど、特殊なプラグインなどで
回避しようと思えばできないこともない・・・しかし回避したからといって、
ユーザーは結局なにもできないのだから、回避する意味はない・・・という流れでしょうか。
>DBにデータを登録後、リダイレクトでメール送信処理ページへ飛ばし、ユーザに登録内容をメールで送る
やってもよろしいんじゃないですか?
ようは再読み込みなどで二重登録したくないということですよね?
セッションと組み合わせながら、元のページにも戻りにくいような仕組みにすると
いいかと思います。
No.2
- 回答日時:
その概念に詳しいサイトがあったはずなんですが、
どうしても見つからなかったので、ちょっと分かりにくいですが参考サイトを一つ。
HTTP文書を受け渡しする際に
ユーザはサーバに対して「リクエストヘッダー」を送信します。
・このサーバのこのフォルダにあるこのファイルをください
・こちらのアクセスブラウザはこういうバージョンで、こういう文字コードだとうれしい
みたいな情報を送信して、
その情報を取得したサーバが、
「レスポンスヘッダー」をユーザに返す
・ファイルの種類やサーバのバージョン、ファイルのサイズにユーザにプレゼントするクッキー情報等
このレスポンスヘッダーに「location」という項目があり
このlocationにurlが入っていた場合
普通のブラウザは今開こうとしているサイトを諦めて、location先に「リクエストヘッダー」を送信して、情報を取得します。
「レスポンスヘッダー」を受け取ったら最後に「レスポンス情報」が取得出来ます。
レスポンスヘッダーで「Content-Type」というものを取得出来るのですが、
ここが「text/html」ならレスポンス情報はhtmlとして
「image/gif」ならgifファイルとして
ブラウザが解釈します。
たまにロケーション無視をしている人がいるかもしれませんし、
ロケーションを送った際に
「切り替わらなかったらここをリンク」
みたいな物を一緒に送っておくのもありです。
参考URL:http://rhongomyniad.org/notes/2004/05.html
No.3ベストアンサー
- 回答日時:
サーバが出力するステータスコードに対してクライアント側がどのように対応するかは、クライアントプログラムに拠るものですから、当然期待する動作をしないという選択もあるでしょう。
相手方がブラウザであるとの前提からそのような画面遷移を期待するわけですが、処理の流れとして大変危ういことは言わずもがなです。
データベースへの登録とメール送信の手配は、ひとつのトランザクション内で完結する必要がある処理だと考えます。時間がかかるならキューに突っ込んで、その旨をレスポンスするだけで十分でしょう。
サーバ内で起こる事は把握できても、外でどう処理されるかは分からないということです。
偶然ですがburp proxy というツールを見つけました。
これはリクエストを毎回ストップさせてforwardボタンを押したら先に進むというものです。
こういうツールを使えばリダイレクトは簡単に拒否できてしまいますね。
やはり「データベースへの登録とメール送信の手配は、ひとつのトランザクション内で完結する」べきなようです。ありがとうございました。
No.4
- 回答日時:
Locationヘッダは、厳密なリダイレクトとは違ってたような?
ただ実装の問題として、
リダイレクト頼みでメイル送信を始めるのは危険です。
ESCでロード停止したら、メイル配信が止まっちゃいますから。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle TOPページ以外の、301リダイレクトの記述設定について 1 2022/08/12 17:14
- PHP 「ログイン機能を持たせる」説明が気難しいです。 2 2022/10/11 02:59
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- HTML・CSS htmlで画面遷移させたい 1 2022/10/28 18:19
- PHP 「teratail」での回答内容がいまいちわかりません。 1 2022/09/10 05:05
- その他(開発・運用・管理) 【至急】.htaccessによるディレクトリ単位でのリダイレクト 2 2023/08/10 13:46
- PHP 掲示板のセキュリティについてアドバイスお願い致します 1 2023/08/11 20:44
- 情報処理技術者・Microsoft認定資格 応用情報処理技術者試験のシステム利用率の計算について 2 2022/03/28 07:43
- サーバー 301リダイレクトができる条件を知りたいです 2 2022/10/25 11:21
- その他(プログラミング・Web制作) 恒久的リダイレクトについて 2 2023/07/13 15:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
php 入力画面から確認表示画面...
-
動的にhtmlテーブルを表示
-
POSTで受け渡したものを保存し...
-
会員登録システム 仮登録のメ...
-
HTMLエスケープ処理とデーター...
-
php/MySQLによるログイン認証に...
-
【ExcelVBA】検索したデータを...
-
フォームを使わずにPOST送信す...
-
閉じるボタン「×」を制御したい
-
必須入力項目チェック
-
「取得先」という表現について
-
Dosブロンプトでtabを出力したい
-
switch()文で値の大小比較
-
DTOとEntityの差は何ですか。
-
wordの差し込み印刷で文字...
-
バッチファイルでpingの結果を...
-
ps3で久しぶりにCDの音楽情報取...
-
shシェルスクリプト 空白行の...
-
自分の掲示板にアクセス解析を...
-
VBA コレクションに2次元配列...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
php 入力画面から確認表示画面...
-
ログイン画面から入って、「戻...
-
php history.back()の戻るボタ...
-
POSTで受け渡したものを保存し...
-
フォームを使わずにPOST送信す...
-
VBAで重複チェックの仕方を教え...
-
PHPで値を保持する方法
-
ブラウザバックしてもチェック...
-
IFRAME内PHPのセッション変数取...
-
【Java】投稿完了画面リロード...
-
HTMLエスケープ処理とデーター...
-
cURL関数を使用したphpからのpo...
-
asp.netでのセッションを使用し...
-
「ページネーション」で検索キ...
-
php に関して質問です。 各ユー...
-
閉じるボタン「×」を制御したい
-
PHPで名寄せするには?
-
セッションを使用したページ遷移
-
HTMLエスケープすべき場所につ...
-
GETのメリットについて
おすすめ情報