私は、ユーザーが自分のアカウントを持つことができるPHPを使用してWebアプリケーションを開発しており、ユーザーを追跡するセッションはMySQLデータベースに保存されます。さて、これを実装する方法についての答えを探した後、私は多くの人々がsession_destroy()
クッキーを使用することと設定を解除することの両方を好むことがわかりました。なぜ-session_destroy()だけでは十分ではないのでしょうか?PHPのマニュアルでさえ、 「ユーザーをログアウトするなど、セッションを完全に強制終了するには、セッションIDも設定解除する必要があります」と記載されています。
私の推論:ユーザーがログアウトした後、サイトを離れる前にたまたまサイトのもう1つのページにアクセスすると、ユーザーがログインしているかどうかを確認するPHPスクリプトがsession_start()を呼び出し、ユーザーの新しいセッションCookieを設定します。とりあえず。次のようになります。
// here we include some scripts and make some instances we'll need
require_once("database.php");
require_once("session.php");
$database_connection = new DB_Connection();
$session = new Session($database_connection);
// here a session cookie is sent to a user, even if he or she isn't logged in
session_start();
// finally we check if the user is logged in
$log_isLogged = false;
if(isset($_SESSION['member_id'], $_SESSION['username'])){
$log_member_id = $_SESSION['member_id'];
$log_username = $_SESSION['username'];
$log_isLogged = true;
}
確かに、ユーザーがこの事実を知っていて、新しいCookieが設定される前にサイトを離れる場合に便利です。ただし、一部のサイトでは、ログアウト直後に新しいページにリダイレクトされ、新しいセッションCookieが生成されます。これにより、実行した内容が元に戻されます。
私の推論には何らかの欠陥がありますか、それともセッションCookieの設定を解除しても問題ありませんか?たぶん、ほとんどの開発者は、少なくともそれを設定解除することは害にはならないだろうと考えていますか?
私はネイティブスピーカーではありませんので、タイプミスや文法上の誤りについて事前にお詫び申し上げます。