0

PHPでログインシステムを作ろうとしています。すべてのデータベースが機能していますが、セッションを保存してロードしようとしているため、サイトをナビゲートするときにユーザーがログインしていますが機能していません。セッション情報を次のように設定しました。

session_start();
...database code
if($count==1){
//log in info correct, save to session and redirect back.
$_SESSION['username'] =$username;
$_SESSION['loggedin'] = "true";

header("location:../index.php");
}

次に、インデックス ページに戻ります。

  <?php
  session_start();
  if(!isset($_SESSION['loggedin'])){
  echo "You must be logged in!";    
  }else{
  echo "You are logged in"; 
  }
?>

このコードはすべて、HTML の前のページの上部に表示されます。ログインした後でも、「ログインする必要があります」と表示されます。

4

3 に答える 3

0

セッションをチェックする場合は、isset() ではなく empty() を使用してください。isset() は、キーが一致した場合ではなく、配列が作成された場合に true を返します。

if(!empty($_SESSION['loggedin'])){
  //do the checks to verify the person

} else {
  //they aren't logged in

}
于 2013-03-28T19:16:18.007 に答える
0

私はこれを試しましたが、うまくいくようです。if($count ... の前に変数を宣言し、 isset を空に変更します。

        $_SESSION['loggedin'] = "";

        if($count == 1)
        {
            /*same thing */
        }


        if(!empty($_SESSION['loggedin']))
        {
            echo "You are logged in";  
        }else
        {
            echo "You must be logged in!";   
        }

また、エコーのあるところにヘッダーを入れたほうがいいと思います。

于 2013-03-28T18:58:36.807 に答える
-2

Cookie が無効になっていますか? 有効になっている場合は、有効にして確認してください。

$countが実際に 1 に等しい場合、コードは問題ないように見え、SESSION は簡単に機能するはずです。

そうでない場合は、phpinfo を次のように確認してください。

                 session
Session Support                 enabled
Registered save handlers            files user mm sqlite
Registered serializer handlers  php php_binary wddx 
于 2013-03-28T19:04:32.383 に答える