ホームページ >バックエンド開発 >PHPチュートリアル >session_destroy() をすぐに有効にできない、解決方法

session_destroy() をすぐに有効にできない、解決方法

WBOY
WBOYオリジナル
2016-06-13 11:59:021182ブラウズ

session_destroy() はすぐには有効になりません
HTML で 3499910bf9dac5ae3c52d5ede7383485 を使用して PHP ページにリンクすると、PHP ページがセッションを破棄しますが、ページを開いたときはセッションがまだ存在します。 PHP ページを再度更新しています。このページには 2 つのステートメントのみがあります: $_SESSION = array();session_destroy(); session_start() が開かれました。
すみません、何が起こっているのですか

-----解決策---------
セッションは、ページ B で session_destroy(); を実行する前に自然に存在します。それ以外の場合は、session_destroy(); を実行する必要はありません。
ページ B に再度アクセスしたときにのみ、セッションが失われていることがわかります (リフレッシュなど) )
ユーザーにとって、session_destroy() は cookie
内のセッション ID をログアウトする命令を送信するだけであるためです------解決策------------- ----- --
a.php

<br /><?php<br />session_start();<br />$_SESSION['name'] = "kobe";<br />?><br /><a href="se2.php">se2</a><br />


b.php
<br /><?php<br />session_start();<br />$_SESSION = array();<br />session_destroy();<br />var_dump($_SESSION['name']);<br />?><br />

------解決策--------------------

引用:
引用: 引用:

その後、ページは実際には決して終了せず、もちろん現在のセッションは消えません。

connection_aborted() 文はクライアントが切断されているかどうかを確認できますが、その実行にはページにコンテンツを出力する必要があるため、ob_flush();flush();
問題は、これら 2 つが文はセッションを破棄させるページは正常に実行できません。つまり、セッションを破棄するには手動で更新する必要があります


それで、次のときにこのループを閉じる他の方法はありますか?クライアントが切断します。それともセッションを破棄するページを正常に実行する他の方法はありますか?
この問題は ob_flush();flush(); によって引き起こされますか?何をするか?

ユーザーが長期間ログインしない場合にオフラインにされるのを防ぐためにこれを行っています。他に方法はありますか?


ページは終了しておらず、現在のページのセッションはファイルに更新されていません。これが、session_destroy() がすぐには有効にならない理由です。
この問題を解決するには、session_destroy(); の後に session_write_close(); を追加します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。