2016-06-28 9 views
0

私は非常に単純な問題を抱えていますが、理由はわかりません。PHPのリダイレクト - 複数の条件のある場合

新しい目が必要です。

自分の設定ファイルで、プロファイルが不完全で、ホーム、設定、ログアウト、プロファイルのエラーページにない場合、ユーザープロフィール情報を取得しています。リダイレクトされます。

基本的には必須としていますが、システムの他の領域にナビゲートすることはできません。

$link = $_SERVER["REQUEST_URI"]; 
if($counter<9 && ($link !="home" OR $link !="logout" OR $link !="profileError" OR $link !="profileSettings")){ 
    header('Location: profileError'); 
    kill(); 
} 

私は正常に動作しているようですが、私のカウンタをテストしました。

助けが必要です。

+0

何が問題なのですか? '$ counter'はどこにありますか? elseを使用し、counterやlinkのようなデバッグ情報を出力します。 – Devon

答えて

0

$_SERVER['REQUEST_URI']には、URLからのファイルの絶対パス名が含まれます。 /home.phpまたは/folder/logout.php。だからあなたの$linkテストのどれも動作しません。試してみてください:

$link = basename($_SERVER['REQUEST_URI'], '.php'); 

.php拡張子のないファイル名だけを取得します。

0

ヘッダーの場所は、作業している場合あなたの状態をチェックしない場合は、間違った

$link = $_SERVER["REQUEST_URI"]; 
    //echo $link; echo $counter; 

    if($counter<9 && ($link !="home" OR $link !="logout" OR $link !="profileError" OR $link !="profileSettings")){ 
     header('Location: profileError'); 
     kill(); 
    } 
else{ 

echo "there is some error"."</br>"; 
echo $link; echo $counter; 
} 
+0

こんにちは、カウンタは0(私はプロフィールフィールドを完了していないので)、変更されたコード: $ link = basename($ _ SERVER ['REQUEST_URI']、 '.php'); echoに "profileError"という変数が正しいことを意味する が追加されました。 ifステートメントはこれらを選択していません。私が "profileError"ページにいるときにリダイレクトが多すぎると言っていますが、IF文ではこのページにリダイレクトしないようにしています... – Andrew

0

は、あなたの状態をコメントし、ヘッダの場所をテストいただきました!こんにちはdebugにあなたの最初のコードecho $link$counterの両方を試すか確認するためにelseを追加何かエラーがありません。

0

管理しています。

$link = basename($_SERVER['REQUEST_URI'], '.php'); 
if($counter <9){ 
if($link !="home" OR $link !="logout" OR $link !="profileError" OR $link !="profileSettings"){ 
    header('Location: profileError'); 
    kill(); 
} 
} 

なぜIF文を分割するのが助けになったのですが、少なくともそれは機能しますか。

0

||(OR)の代わりに&&条件演算子を使用してください。

翻訳:ページがXとYと呼ばれていない場合は...そうでなければ、ページがXまたはYと呼ばれていない場合、常に呼び出されます。

$link = basename($_SERVER['REQUEST_URI'], '.php'); 
if($counter <9){ 
    if($link !="home" && $link !="logout" && $link !="profileError" && $link !="profileSettings"){ 
     header('Location: profileError'); 
     kill(); 
    } 
} 
関連する問題