-1

以下は私のウェブサイトの流れの一部です。いくつか質問があります。アドバイスをいただければ幸いです。

ユーザーがページにアクセス>
以前に (isset session[id]) にアクセスしていない場合は、
1. session[id] に一時 ID ストアを指定します。
2. サーバーに session[id] store という名前のフォルダーを作成します。

ユーザーがアクティビティを終了したら、ページを離れます。
1. 1 時間後、dir のフォルダーを削除します。


Q1 . ユーザーが去った後、フォルダが正常に削除される場合とそうでない場合があります。なぜですか?
1時間後にフォルダーを削除する方法を設定するには?

(Mamp localhost、Safari、Firefox)さまざまな状況でテストします。1.ウィンドウの閉じるボタンをクリックします 2.ブラウザプログラムを直接終了します 3.同じウィンドウを他のWebサイトに転送します。4. インターネット信号を遮断します。(Mamp localhost 、Safari、Firefox)

window.onbeforeunload = confirmExit;
function confirmExit(){         
    $.ajax({
        type: "POST",
        url: "index.php",
        data: 'remove_session='+'remove_session', // trigger php remove folder and row in table
        success: function(html){
        }
});
};

Q2 . ユーザーが以前に来たかどうかを検出するより良い方法はありますか? ユーザーはウェブサイトにいませんか?

4

2 に答える 2

1

ユーザーが去った後、フォルダーが正常に削除される場合とそうでない場合があります?? なんで?そして、これを回避する方法は?

この概念がどのように実装されているかについて多くを説明したわけではありませんが、cronjob を使用していないと仮定しています

これは、スクリプトを実行するには、サーバーがリクエストを作成する必要があるためです。これは、ユーザーが去り、その後リクエストが行われない場合、フォルダーを削除できないことを意味します (まだ)。

この問題を解決するには、おそらくCron ジョブが必要です。Google とここの両方で、多数のチュートリアルと情報を見つけることができます。

ユーザーが以前に来たかどうかを検出するより良い方法はありますか?

現在のシステムは、ユーザー入力の危険なグループの一部として完全に信頼できないセッションを使用しています (セッションは Cookie で実装されています)。ただし、何らかの追跡が必要になります。私の頭に浮かぶオプションは次のとおりです。

  • ゲスト情報をデータベースに保存 (IP、MAC など)
  • ログイン システムを作成する (最後のログイン タイムスタンプを保存する)

次に、最後の訪問のタイムスタンプを取得したら、それを理解できると思います。

ユーザーはウェブサイトにいませんか?

これは非常に議論されているトピックです。簡単に見つけることができる StackOverflow の質問がたくさんあります。

簡単に言えば、Javascript を使用できる場合は、かなりまともな精度を得ることができます (最大 5 秒のスパンまで、それ以下は推奨されません)。そうでない場合は、分数を設定します ( X) その後、ユーザーはAFK /*オフライン* と定義されます (ほとんどの時間は 10 ~ 15 分です)。

基本的な考え方は次のとおりです (Javascript のタイムアウト関数、それ以外の場合は要求ごと)。

  • ユーザーからサーバーに対して行われた最後のリクエストのタイムスタンプをlast_seen
  • 必要に応じて取得last_seenし、 と比較しtime()ます。
  • 差が < X (X は上で定義した時間) の場合、ユーザーはオンになり、それ以外の場合はオフになります

注: たとえば、Javascript では、タイムアウト関数を 5 秒ごとにリクエストを送信するように設定した場合、X = 10 秒 (〜 10 秒の精度) でタイミングを簡単に確認できます。

于 2013-04-27T10:59:12.053 に答える
1

あなたのサイトがどのように設定されているか、または実際に何を保存しているのかわかりませんが、クライアント側のデータ (Cookie/ローカル ストレージ) を保持することはできますか?

古いフォルダーをクリーンアップするだけの場合は、ユーザー セッションにタイムスタンプを追加して、1 時間に 1 回、x 時間以降にアクセスされていないフォルダーをクリーンアップしてみてください。

于 2013-03-31T23:41:55.010 に答える