2

セッションの破棄に問題があります。そのファイルでlogout.phpというスクリプトを実行しています。ユーザーセッションを破壊しています。また、ショッピングバッグを削除するクエリを実行しています。これは正常に動作していますが、ブラウザを閉じるかセッションが自動的に破棄されると、しばらくするとショッピング バッグを削除する必要があり、この状況では logout.php は呼び出されません。では、どうすればこれを達成できますか。

logout.php :-

<?php
include_once('functions/config.php');
session_start();


$sql = "DELETE FROM baskets WHERE member_id = '".$_SESSION['memid']."' ";

mysql_query($sql);

session_destroy();   


header('location:index.php')

?>
4

3 に答える 3

2

この質問に対する2つの答えがあります:1)javascriptイベントwindow.onbeforeunloadの例を使用して買い物袋を片付けることができます:

     window.onbeforeunload= function(){
        // your ajax call to clear shopping bag
     }

2)このオプションをお勧めします:ユーザーのログイン時に買い物袋をクリアできます。

于 2013-01-16T09:29:20.940 に答える
2

セッションが破棄されたときに呼び出されると安全に想定できるコードを記述する方法はありません。

必要なことを行う最も簡単な方法は、アクセスごとに更新するバスケットに「最終アクセス」タイムスタンプを設定し、アクセスされていないすべてのバスケットを削除する cron ジョブ (スケジュールされたジョブ) を 1 時間ごとに実行することです。たとえば、6時間以上です。セッションのタイムアウトと同時に削除されることはありませんが、長期的には古いバスケットがデータベースから除外されます。

于 2013-01-16T07:25:35.237 に答える
0

(たとえば) ユーザーのブラウザが閉じられたときにショッピング バッグを消去してもよろしいですか? 「前回は正しくログアウトしていませんでした。買い物を続けますか、それとも最初からやり直しますか?」のような警告を出すことができます。、 そんな感じ。

HTTP はステートレス プロトコルであるため、ブラウザーが実際にいつ閉じられるかはわかりません。私の意見では、セッションのタイムアウトを処理する必要があるため、一定期間が経過した後、ユーザーのアクティビティがまだない限り、ショッピング バッグはとにかくクリアされます。

それが役立つことを願っています。

于 2013-01-16T07:25:11.703 に答える