2012-02-16 8 views
0

ログインしていないユーザーが特定のページを閲覧できないようにするためにこのスクリプトを作成しました。私はそれを働かせることを試みたが、喜びはない。誰かが私に何が間違っているか教えてもらえたら、とても感謝しています。ログイン保護されたページはログインにアクセスする必要はありません

<?php 

session_start(); 
require_once ("ConnectToMySql.php"); 

if (!isset($_SESSION['username'])) 
{ 
    header("location:../Login/LoginForm.php"); 
} 
?> 
+0

どのように動作していないのかを詳しく教えてください。 –

+0

ログインすることなくページにアクセスできるようにします。 – alexjfno1

+1

$ _SESSIONをチェックして、そのデータに含まれているデータを確認しましたか? – dm03514

答えて

0

まず第一に、ユーザーが認証されている場合の、テストしてみましょう:

<?php 

session_start(); 
var_dump($_SESSION); // print all the session to see if $_SESSION['username'] is set 
exit; 
... 

ユーザーがログインしている場合は、セッションを終了するには、ブラウザを再起動してください。

$_SESSIONが空の場合、ユーザーはログインしていません。最初のテスト行を削除し、実行がheader関数に行くかどうかを見てみましょう:

if (!isset($_SESSION['username'])) 
{ 
    echo "User will be redirected"; 
    exit; 
    header("location:../Login/LoginForm.php"); 
} 

これまでのところ大丈夫な場合は、リダイレクトが機能していないことを意味します。 送信された出力があれば、ヘッダーはブラウザーに送信できなくなります。そのような場合は、ファイルを確認する必要があります(ConnectToMySql.phpなどのファイルも含まれています)。よくある間違いは、コンフィギュレーションファイルにphpタグ?>を閉じた後に空白スペースを追加することであり、それは見つけ出してデバッグするのが非常に難しいです。これを避ける簡単な練習は、PHP終了タグ?>をPHPのみを含むファイルに置くことは決してありません。

これらのテストによっては、少なくとも動作していないものを見つけることができます。

+0

長い返事を申し訳ありませんが、私は離れています。私はあなたの答えを試して、それはエコーユーザーが制限されます。私は、エコーを終了して終了し、ヘッダーが動作していないことが判明し、その理由は、ページをブロックしていません。 – alexjfno1

関連する問題