0

ログイン スクリプトを作成しました。ユーザーがいつログインしているかを確認するには、logged_in() 関数を使用します。

function logged_in()
{
    if(isset($_SESSION['id']))
    {
        return true;
    }
    else 
    {
        return false;
    }
}

セッションはここで設定されます:

else if ($login === true)
        {
            echo 'Login success.';
            include 'include/aside.php';
            include 'include/footer.php';
            $userid = id_from_username($username);
            $usernameforsession = username_from_id($userid);
            $_SESSION['id'] = $userid;
            $_SESSION['username'] = $usernameforsession;
            header( "refresh:2;url=index.php");
            exit();
        }

そして、これは「index.php」でそれを使用する私の例です:

if(logged_in() === true)
{
    echo 'Site content when user is logged in.';
} else if(logged_in() === false)
{
    include 'include/widgets/register.php'; //registration form
}

はい、機能はすべてのページに含まれています。この関数を作成したので、動作するはずです...なぜ動作しないのですか?

4

3 に答える 3

1

次のコードを置き換えます。

if(logged_in() === true)

このコードで:

if(isset($_SESSION['id']))

それはすべての仲介者を排除します。

于 2012-08-12T13:34:14.520 に答える
0

かなりの数のコードをリストsession_start();しましたが、各ページの上部に含めていますか? セッション変数で何かを行う前に、これを呼び出す必要があります。

2 つ目は、エラー メッセージが関数が定義されていないことを示していることです。ページのソースに含まれているか、各ページで関数を定義するコードへのインクルードとして含まれていますか?

「functs.php」というファイルにある場合は、include()その関数を呼び出すすべてのページで必要です。

于 2012-08-12T13:20:21.587 に答える
0

宣言がすべてのページに含まれていることが確実な場合は、関数がオブジェクト内のメソッドとして宣言されていないことを確認することをお勧めします。

于 2012-08-12T13:25:19.823 に答える