0

訪問者用の Web サイト ページとクライアント用のページを /admin で管理しています。

admin/index.php にログイン システムを作成しましたが、問題なく動作しています。しかし、ブラウザに管理ページの URL (例: admin/carro_admin.php) を入力すると、ログに記録されていなくてもアクセスできます。そのため、このページ (carro_admin) にセッション チェックを配置して、訪問者をブロックし、ログイン アクセスのみを許可しようとしています。

私はそれをしようとしています:

if (isset($_SESSION)) {
  header("location:carro_admin.php");   
}

else {
    header("location:index.php");   
}

exit();

アクセスがブロックされ、index.php に送られます (その通りです)。しかし、現在、ログイン システムは機能しません。ユーザー名とパスワードを入力すると、再び index.php にリダイレクトされます。

セッション コードに何か問題がありますか?

Ps .: 私はすでにこの質問を読みました: How to set and check a session after login? しかし、それもうまくいきませんでした。

4

2 に答える 2

1

これをログインプロセスに追加します。つまり、ユーザー名/パスワードを入力して送信ボタンをクリックしたときです。

<?php session_start(); 
     /*authenticate the username &^ password*/ 
     if($result) {
         $_SESSION['logged_in']=1; 
     } 
?>

今は管理ページに

<?php session_start();
     if(isset($_SESSION['logged_in'])) {
           header("location:carro_admin.php");
     } else {
           header("location:index.php");   
     }
?>
于 2013-04-10T01:09:56.770 に答える
1

リダイレクトがあるページの上部に session_start () がありますか? そうでない場合、セッションは設定されません。ブラウザ以外からページにアクセスして、リダイレクトされることなく管理ページのすべてのコンテンツを取得できます。ユーザーがログインしていない場合は、リダイレクト後にスクリプトを終了させる必要があります。また、isset ($_SESSION) を使用しないでください。@$_SESSION["loggedIn"] === TRUE のようなものを使用する必要があります。

于 2013-04-10T00:57:28.737 に答える