0

ユーザーを正常に作成してログインできるログインスクリプトがあります。今、私の問題は、ページを保護する方法を使用しようとするたびに、「ユーザー」のセッションがあるかどうかを確認することです。ログインページに戻ります。

ここでセッションをチェックしています。

require("common.php"); 


if(empty($_SESSION['user'])) 
{ 

    header("Location: login"); 

    die("Redirecting to login"); 
} 

ここでセッションを設定しています。session_start(); のみを設定しています。login.php で

if($login_ok) 
    { 

        unset($row['salt']); 
        unset($row['password']); 

        $_SESSION['user'] = $row; 

        header("Location: home?worked=1"); 
        die("Redirecting to: home?worked=1");
        session_start(); 
    } 
    else 
    { 
        print("Login Failed."); 
        $submitted_username = htmlentities($_POST['username'], ENT_QUOTES, 'UTF-8'); 
    } 
} 

これが何をするかというと、ログインすると、処理されてホームページに移動し、ヘッダーが処理されて、ログインしていないかのように機能するログイン ページに戻ります。偽のログインをテストしたところ、正しいログイン。

助けてくれてありがとう、私はここで髪を引っ張っています!

ネクロ

編集

session_start(); を移動しました。私のcommon.phpの一番上に、すべてが完璧です。

4

3 に答える 3

1

session_start()を上に設定したほうがよいでしょう。

于 2012-11-25T04:06:11.673 に答える
1

session_start(); を置く必要があります。セッションを使用するすべてのページで。

于 2012-11-25T04:06:49.713 に答える
1

あなたはsession_start();$_SESSION['user'] = $row; に持っています 実際には、die();コマンドの後に持っています。その後は何も起こりません。

session_start();1 つのページだけでなく、すべてのページ (pref common.php があるため) の PHP の先頭に配置します。

于 2012-11-25T04:02:50.850 に答える