簡體   English   中英

允許非注冊用戶上傳文件

[英]Allow file uploads for non-registered users

我正在創建一項服務,允許我的網站訪問者創建內容(文本)並保存,以便他們以后可以訪問。 但是,用戶在使用此功能之前不需要用戶帳戶。 他們只需單擊“立即嘗試”並使用它。 如果他們想保存自己的工作,那就是他們需要注冊的時候。

我打算添加“上傳圖像/文件”功能。 但是,我對如何在“立即嘗試”模式(未登錄用戶)中實現此方法的想法感到困惑。 在我的頭上,我將創建一個臨時用戶名並將其存儲在會話中,並創建一個相應的臨時文件夾,供用戶上傳文件到該文件夾​​。 但是,我該如何清理呢? 用戶只能關閉瀏覽器,而我將無法知道仍在使用臨時文件夾。

有沒有更好的方法呢? 還是應該完全阻止未注冊用戶上傳文件?

順便說一下,我在CodeIgniter上使用PHP

您的意見將是無價之寶:)謝謝!

您可能已經為用戶提供了某種會話密鑰,將其用作臨時目錄名稱。 當用戶的會話超時(即,他們已經很長時間沒有活動)時,請刪除目錄。 對於匿名用戶,“很長一段時間”可能只有幾天。 如果很難連接到會話超時,則可以通過單獨的清理過程來完成。

為了以防萬一,您可能還希望限制匿名用戶可以使用的磁盤空間量。

這里是一種可能的方法:

  • 在每個頁面請求中,將會話ID-日期時間對保存在數據庫中,
  • 對於每個保存的圖像,將文件和關聯的會話ID保存在數據庫中。

然后,您可以定期檢查過時的文件 例如,如果您的會話限制為30分鍾,則可以遍歷數據庫並選擇每個過期的會話,即。 日期時間+ 30分鍾小於現在的記錄。 然后,刪除通過這些過期會話存儲的每個文件。

因此,如果將它們放在文件夾中,請給它們提供某種臨時名稱,例如_tempimage_<username> ,只要調用此上傳腳本,就掃描這些臨時文件,如果找到但未使用它們,則將其刪除。 要檢查是否已使用它們,請使用數據庫將這些“立即嘗試”條目存儲一段時間。

我認為簡單易行的方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM