質問
現在、私のphpスクリプトでは、ユーザーがログインした後、session_login = 1を保存しました。しかし、問題があります。私は、Firefoxのマルチタブを使用する習慣があります(ほとんどの人と今日のすべてのWebブラウザーアプリにはマルチタブ機能があると思います)。セッションがあるタブを閉じましたが、ブラウザーを閉じませんでした。数時間後、ログインが必要な同じページに戻りますが、ログインはしません。再度ログインする必要はありません(「セッション」と呼ばれると思います)。ユーザーがブラウザを閉じる代わりにタブを閉じた場合、ユーザーをログアウトする方法はありますか?
現在、1つの解決策があります。ただし、PHPの日付/時刻に関する知識は非常に限られているため、これが最後のオプションになります。知りたかったのですが、他にできることはありますか?
解決
PHPには、セッションがタイムアウトするまでの持続時間を簡単に設定する方法があります:
session_set_cookie_params(3600); // make it expire after 1 hour
セッションを継続する秒数を渡すだけです(この例では、1時間= 60分= 3600秒)。
http://us2.php.net /manual/en/function.session-set-cookie-params.php
他のヒント
セッションCookieは、ブラウザセッションが閉じられたとき(つまり、ブラウザが閉じられたとき)にのみブラウザからクリアされます。したがって、名前です。タブを閉じた直後にセッションをクリアしたい場合は、Cookieに非常に短い有効期限(約5分)を設定し、データベースに保存することができます。次に、ウェブページ上で毎分サーバーからファイルを呼び出すjavascript関数を使用します。このファイルは「更新」されます。次の5分間のCookie /データベースエントリ。その後、5分以上サイトを離れると、セッションは無効になります。
Javascript" onunload"を追加することもできます。ウェブページを閉じたか、別のページに移動したかを検出する関数:これにフックを追加して、「destroycookie」を呼び出すことができます。機能-ただし、サイトの別のページに移動しただけでなく、実際にサイトの2つのページが2つのタブで開いていないことを確認する必要があります。
お探しのオプションは、セッションCookieの有効期限の設定だと思います。そのためのPHPコマンドは覚えていませんが、ウィンドウが閉じるとcookieが期限切れになるように設定できるはずです。
PHPセッションのドキュメントは次のとおりです。 http://us2.php。 net / manual / en / book.session.php
おそらく、session_write_close()を使用できますか?
session_destroy関数のPHPドキュメントに役立つコメントがあります: http://us2.php.net/manual/en/function.session-destroy.php#71889