2011-07-11 9 views
1

Page1.phpとPage2.phpという2つのページがあるとします。時にはPage1.phpが直接ロードされ、ときどきPage2.phpからリダイレクトされることがあります。私の質問は、Page1.phpが直接ロードされているか、Page2.phpからリダイレクトされているかどうかを確認できます(クエリ文字列が使用されていない場合)ページが直接読み込まれているか、他のページからリダイレクトされているかをPHPでチェックする方法は?

+0

が/なぜあなたはこれをしたいですか?たぶんもう一つの解決策があります。 –

+0

これは私がlogin.phpページとvalidation.php pageを持っているからです。検証ページのユーザ名とパスワードはデータベースの値と一致し、そうでなければlogin.phpページにリダイレクトされます。だからリダイレクトで私はログインページにいくつかのエラーメッセージを表示する必要がありますし、私は必要がない場合。 – ANP

答えて

7

Page2.phpでセッション変数を設定し、

Page2.php

<?php 
session_start(); 
$_SESSION['from2'] = true; 
header('Location: /Page1.php'); 
?> 

の.php Page1.php

<?php 
session_start(); 
if(isset($_SESSION['from2']) && $_SESSION['from2']) { 
    /* from Page2.php logic here */ 

    unset($_SESSION['from2']); 
}else{ 
    /* not from Page2.php */ 
} 
?> 
1

グローバル変数$_SERVER['HTTP_REFERER']の値を読み取ることができます。

+1

これは、正確性の必要性が低い場合に機能します。 RefererフィールドはHTTPではオプションであり、一部のブラウザはそれらを送信しません(私は自分自身でそれを無効にしていますが、一部のファイアウォールは要求からそれを削除します)。 –

+0

私はこれを使うことができますが、リファラーがなりすましになる可能性があるため、クリティカルなアプリケーション(信頼性がない)では使用できないと思います。 http://en.wikipedia.org/wiki/Referrer_spoofingそれで、セッションを使っているエミールの答えはもっと安全だと思います。 – Alfred

+0

これは、URLにパラメータを渡していない場合にこれを行う唯一の方法です。もちろん、現在のページを覚えているクッキーを保存することもできますが、これも100%安全ではありません。 – Gedrox

関連する問題