0

私は、ユーザーがある種の DB に写真をアップロードできる Web サイト (PHP) を作成しようとしています。ページを離れると、写真は削除されます。他のユーザー (別のページ) は、削除されていないすべての写真を見ることができます。

私はこのようにすることを考えました:

フォルダを作成し(「pics」と呼びましょう)、アップロードされたすべての写真に番号(、、、など)を付けて名前を付けます1.jpg。ユーザーがページを離れると、写真はそれ自体を削除し(どのように??)、次の写真が必要になると写真をアップロードするために、ウェブサイトは撮影されていない最初の番号を検索します。2.jpg3.jpg

誰かがより良いアイデアを持っているなら、私はそれを聞きたいです。

  1. #.jpg ファイルのみで満たされたフォルダーから最初の非取得番号を見つける関数を作成するにはどうすればよいですか? (そして、数字の二重取得から身を守るために何ができますか)

  2. ユーザーがページを離れたときに写真を削除するにはどうすればよいですか?

  3. ディレクトリからランダムに写真を表示するにはどうすればよいですか?

それらが回答された後: また、写真を表示するユーザーが 1、2、または 3 をクリックできるようにし、写真をアップロードした人 (明らかにまだウィンドウを開いている人) に 1 秒 2 秒 3 秒のカウントを表示できるようにしたいと考えています。 )。どうすればいいですか?(SQL dbなしでスマートな方法を探しています)

アイデア: ファイル名を#_1s_2s_3s.jpg(例: 1_0_0_1.jpgis pic 1 with 0,0,1 clicks) に変更しますが、他のすべての質問がはるかに難しくなります...

4

1 に答える 1

0

明示的なログアウト イベントがない限り (その場合、答えは簡単です)、「ユーザーの離脱」は「ユーザーが x 時間アクセスを停止した」という観点からのみ定義できると仮定します。つまり、これは非常に典型的なセッション/タイムアウト ベースの状況です。たとえば、セッションは同じように動作します。セッション タイムアウトは、ユーザーが別のページにアクセスするたびに延長されますが、x 時間古いままであると、最終的には消去されます。

あなたのアイデアに同様のスキームを提案します:

  1. 最初の訪問時に、ユーザーは Cookie にランダムな ID を取得し、その ID のデータベース レコードを保存します。
  2. ページが読み込まれるたびlast_seenに、データベース内のそのユーザー ID のタイムスタンプを更新します。
  3. アップロードされた画像をデータベース内のその ID に関連付けます。
  4. last_seenx よりも古い場合は、一定の間隔で、ユーザー ID とそれに関連付けられたイメージを一掃します。これは、cron ジョブとして、または x ページが読み込まれるたびに多かれ少なかれランダムに実行されるタスクとして実装できます。

ガベージ コレクション サイクルの一部として画像を消去するカスタム セッション ハンドラを簡単に作成できます。手始めにhttp://php.net/session_set_save_handlerを参照してください。

于 2012-10-02T03:22:57.683 に答える