2011-12-29 7 views
1

私のログインシステムでは、AJAX経由で要求されたfancyBoxライトボックスにポップアップ表示させています。しかし、1つの問題があります。ユーザーがブラウザでlogin.phpに移動すると、ログインポップアップを持つページにJavaScriptが役立つため、非構造化ページが表示されます。彼らがlogin.phpにいる場合、それらをホームページにリダイレクトしたいです。PHPでログインページ自体にいる場合、どのようにユーザをリダイレクトできますか?

<?php 
if($_SERVER['REQUEST_URI'] == '/login.php') { 
header("Location: /"); 
} 
?> 

を同様に:あなたはfancyBoxを開くときにページを台無しにし、それが空白になるので、両方が動作しない

<?php 
if($_SERVER['PHP_SELF'] == '/login.php') { 
header("Location: /"); 
} 
?> 

は、私がこれをやってみました。

ユーザーがfancyBoxに影響を与えないログインページそのものにいる場合、リダイレクトする方法はありますか?非AJAXリクエストを検出し、その場合にリダイレクトするために、あなたのlogin.phpスクリプトでこれを入れて

答えて

2

//Redirect the user if page not requested via ajax 
if(!$_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest') { header('Location: /'); } 
+0

おかげで、私は取得していますエラーを見て:主要なフレームワークのほとんどは、これは、要求にX_REQUESTED_WITHフラグに渡すんがhttp://screencast.com/t/jWVbZ5xKD6R – Nathan

+0

ユーザーがフレームワークを使用していると仮定した場合にのみ信頼性があります。 POSTまたはGET変数を渡すことは、フレームワークにとらわれない方法で、より信頼できます。 –

+2

ああ、私の悪い。私は$ _SERVERを$ this-> server =とするのに慣れています。 $ _SERVER ['HTTP_X_REQUESTED_WITH'] –

1

私はポストに渡し示唆またはそのスクリプトに示し、あなたのAJAX呼び出しで変数になるだろうリクエストはajaxからのものです。以下のような何か:

if(isset($_REQUEST["yay_ajax"])){ 
    // Output your login stuff 
} 
else{ 
    header("Location: index.php"); 
} 
関連する問題