0 レビュー
2 回答
php-ブラウザが閉じたときにクエリを実行する方法は?
以下のスクリプトがあります。ウィンドウを閉じると、ユーザーのログアウトは機能していますが、データベースではステータスは変更されていません。つまり、ステータス1はユーザーがオンラインであることを示し、ステータス0はオフラインを示しますが、ユーザーがウィンドウを閉じてログアウトしてもステータスは変更されませんでした。
[ログアウト]ボタンをクリックすると、onluのステータスが変わります。
if($_SESSION['username'] != "admin")
{
$timeout = 1;
$logout_redirect_url = "logout.php";
$timeout = $timeout * 60;
if(isset($_SESSION['start_time']))
{
$elapsed_time = time() - $_SESSION['start_time'];
if ($elapsed_time >= $timeout)
{
$db->query($strQuery1);
header("Location: $logout_redirect_url");
}
}
$_SESSION['start_time'] = time();
}
わからない
0
レビュー
答え :
解決策:
それがより良い方法かどうかはわかりません ユーザーが現在Webサイトにアクセスしているかどうかを動的に知りたい場合は、データベースで最後に接続した値を設定できます(これにより日時の値が保存されます)。この値「最後の接続」は、ユーザーが新しいページをリロードしたときにリセットされます。これは、テストを適用して、ユーザーが現在ログに記録されているかどうかを確認するときにリセットされる場合があります。
その後、「last connect」という値を読み取るcronを作成すると、ユーザーがタイムアウトしているかどうかを知ることができます。
わからない
0
レビュー
答え :
解決策:
できることは、javascript window.onBeforeUnload
イベントを追加することです。これにより、ajax呼び出しがトリガーされ、クエリが更新されます。
しかし、クライアント側だけなので安全ではありませんが、一見の価値があります。
別の方法は、セッション時間を確認することです。セッションが希望のタイムアウトで更新されていない場合は、ユーザーを手動でログアウトします。
追記:このマニュアルもご覧ください。参考になります。
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。