一個鎖文件,我想只有讓用戶能夠點擊一次鏈接,像這樣的:使用Cookie作爲PHP
http://www.blah.com/download.php?file=zFZpj4b2AkEFz%2B3O
每個用戶都有發送的電子郵件一個獨特的鏈接,當他們點擊它時,我想在服務器上設置一個cookie,所以我知道再次拒絕該鏈接的訪問。
任何想法歡迎。
謝謝。
一個鎖文件,我想只有讓用戶能夠點擊一次鏈接,像這樣的:使用Cookie作爲PHP
http://www.blah.com/download.php?file=zFZpj4b2AkEFz%2B3O
每個用戶都有發送的電子郵件一個獨特的鏈接,當他們點擊它時,我想在服務器上設置一個cookie,所以我知道再次拒絕該鏈接的訪問。
任何想法歡迎。
謝謝。
阻止重複下載可能導致的問題(特別是與互聯網探索者文件攔截,導致頁面刷新)。
Cookie是錯誤的答案,因爲所有用戶必須做的是使用不同的瀏覽器/計算機或清除他們的Cookie重新下載。
如果你不顧一切地做到這一點怎麼樣
在文件系統上創建符號鏈接到真正的文件和名稱的鏈接一樣的密鑰。
在處理頁面請求:
這聽起來像一個計劃!謝謝。首次使用獨特的鏈接創建符號鏈接,然後拋出一個「已訪問」錯誤(如果存在的話)?儘管如此,我已經脫離了PHP的文件系統。任何代碼片段都會非常受歡迎! –
[PHP手冊在符號鏈接](http://php.net/manual/en/function.symlink.php)。您需要某種方式來清除您創建的所有額外符號鏈接。此外,由於您正在阻止其他人訪問該網址,因此您可以另外將該密鑰存儲在用戶會話中作爲覆蓋,以便他們刷新頁面。 –
謝謝你的幫助! –
在download.php上檢查是否存在像AlreadyAccessed這樣的cookie,如果存在,否認下載,否則開始下載文件並設置cookie。這就是它
Cookie存儲在客戶端,而不是服務器端,所以這不是正確的選擇。如果用戶刪除了您網站的Cookie,他將能夠規避基於cookie存在/價值的任何檢查。
您可能發送鏈接時在服務器上創建具有特定名稱的文件,並在訪問該文件後將其刪除。如果有人試圖再次訪問該鏈接,則「標誌」文件將不存在,您將知道這是重複(或無效)鏈接。
(將與數據庫雖然,基於文件的檢查是很難在非活潑的方式做。更好)
來自Cherokee Web服務器項目的隨機示例:http://www.cherokee-project.com/doc/modules_handlers_secdownload。html –
Cookies是存儲在客戶端,所以你不能做到這一點。如果下載文件出現問題怎麼辦? – Quentin
如果你真的不希望用戶點擊兩次,你可以在db中創建一個關於點擊事件的記錄... – k102
默認情況下,Internet Explorer會阻止下載,一旦你點擊確定,它會刷新頁面,你的代碼會看到這是一個雙擊 –