3

教師がログインしているかどうかを確認するコードを以下に示します。セッションを通じて教師のログイン状態を確認するための $_SESSION 変数は member.phpスクリプト内にあります。

<?php

session_start();

include('member.php');
include('teachername.php');
...

if ((isset($username)) && (isset($userid))){ 


...

}else{ 

echo "Please Login to Access this Page | <a href='./teacherlogin.php'>Login</a>";

}

?>

セッションの有効期限が切れている場合は、Please Login to Access this Page正しいメッセージが表示されます。しかし、私が抱えている問題は、セッションの有効期限が切れると、$_SESSIONこのページにセッションがあるため、このページに未定義の変数の通知が表示され始めることです。

ただし、セッションの有効期限が切れた後、すべてのページに通知が表示されるわけではありません。ユーザーがログアウトを確認する必要があるページにのみ表示されます。コードに表示include(teachername.php)されるログアウト コードは次のとおりです。

<?php

...

        echo "Logged In: <b>{$_SESSION['teacherforename']} {$_SESSION['teachersurname']}</b> | <a id='teachlogout' href='./teacherlogout.php'>Logout</a>";
        echo "<br/><a id='resetlink' href='./resetpass.php'>Reset Your Password</a>";

        ?>

ユーザーがLogoutリンクをクリックすると、以下の処理が実行session_destroy()されます。

<?php

        if ((isset($username)) && (isset($userid))){

        session_destroy();

            echo "You have been Logged Out | <a href='./home.php'>Home</a>";
        }

        else {

            echo "You are Not Logged In";

        }



        ?>

私が求めているのは、一部のページでセッションが期限切れになったときに、ユーザーがログアウトする前に確認する必要があるこれらのページに配置した確認のために、セッション変数を破棄しないことです。未定義のセッション変数エラーを示す問題はすべてこれらのページにありますが、他の php スクリプトには、セッションが終了してもこの問題はありません。

以下は、ログアウトを確認するためのコードです。

$(function() {   

    function logoutHandler() {
    return confirm("You are currently creating an Assessment, are you sure you want to logout?" + "\n" + "(Your current assessment details will be lost)" + "\n");
}

$('#teachlogout').click(logoutHandler); 

#teachlogoutログアウトリンクのIDです

4

1 に答える 1

0

使用する前に、セッション変数が設定されているかどうかを確認する必要があります。そのコードを echo ステートメントの外に置きます。例えば

$firstname = isset($_SESSION['teacherforename'])?$_SESSION['teacherforename']:'';

そして、名前のないユーザーをログインしていないものとして扱います。

于 2013-01-10T18:25:12.400 に答える