2012-05-01 19 views
0

私はadminユーザー以外のすべてのログインを処理しています。php - session、check for admin

admin.phpに移動しようとすると、既に管理者としてログインしていても「ログインしてください」というメッセージが表示されます。

私は管理リンクをクリックすると、まず下のコードであるcheckAdmin.phpに行きます。

<?php 
if($_SESSION['userEmail'] != '[email protected]') { 
    echo "<center><font face='Verdana' size='2' color=red>Must be logged in</font> <br><a href=index.php>Login Here</a></center>"; 
    exit; 
} 
?> 

私はこれに何か間違っていますか?おかげさまで

私はsession_start()を持っています。私のadmin.phpページの一番上にあります。 私はprint_r($ _ SESSION)を使用しました。この行を得たので、正しい値を持っています。

Array ([userEmail] => [email protected]) 

また、session_start()を追加すると、 checkAdmin.phpには、checkAdminの画面が表示されます。これをクリックすると、管理ページに移動します。

admin.phpを使用すると、セッション変数をチェックする前にsession_start()と呼ばれていることを確認してくださいトップ

session_start(); 
require "checkAdmin.php"; 
include("db_info.php"); 
+0

を持っている; '代わりに'require'の中身 –

答えて

3

でこれを持っています。

+0

私は個人的に' if(!isset($ _ SESSION)){session_start();を使います。 } '時々、いくつかのエラーを引き起こすかもしれないので。 – Styxxy

+0

次に、endo.anacondaの言うことを行い、$ _SESSION変数をダンプして、そこに何かがあるかどうかを確認します。 – gcochard

+0

私はsession_start()を入れます。私はちょうどcheckAdmin.phpページで立ち往生しています。 – Meowbits

2
  • 呼ばれなければならsession_start()
  • ログイン・プロセス間、あなたはおそらく $_SESSION['userEmail']を設定しませんでした。
  • 私は本当にあなたがsession_start()を追加しようとしましたprint_r($_SESSION);
+0

print_r($ _ SESSION)を使用しています。私は正しいメールを受け取る – Meowbits

1

であなたのセッションであるかどうか確認したいですか?セッション変数を探す前にそれを行う必要があります。

それを試してみてください。代わりにしますprint_rの

<?php 
session_start(); 
if($_SESSION['userEmail'] != '[email protected]') { 
    echo "<center><font face='Verdana' size='2' color=red>Must be logged in</font> <br><a href=index.php>Login Here</a></center>"; 
    exit; 
} 
?> 
+0

それを試して、私はちょうどcheckAdmin.phpページで立ち往生している。 – Meowbits

1

使用のvar_dump()を。報告された文字列の長さに細心の注意を払う。なぜなら、いくつかの文字は見えないが、明らかに文字列の比較が失敗するからである。

あなたは `admin.php`あなたはおそらく(「checkAdmin.php」)が含ま`使うべきでは `のsession_start()`ということに頼っている場合は、おそらく浮遊空白文字

+0

これを使用して、私はarray(1){["userEmail"] => string(17) "[email protected]"}のリターンを得る – Meowbits