在PHP中使用Cookie作为锁定文件

时间:2011-08-04 08:35:35

标签: php cookies

我想只允许用户点击一次链接,例如:

http://www.blah.com/download.php?file=zFZpj4b2AkEFz%2B3O

每个用户都有一封带有唯一链接的电子邮件,当他们点击它时,我想在SERVER上设置一个cookie,所以我知道要再次拒绝该链接的访问权。

欢迎任何想法。

谢谢。

3 个答案:

答案 0 :(得分:1)

在download.php上检查是否存在像AlreadyAccessed这样的cookie,如果存在,则拒绝下载,否则开始下载文件并设置cookie。就是这样

答案 1 :(得分:1)

阻止重复下载可能会导致问题(尤其是导致页面刷新的Internet Explorer文件阻止程序)。

Cookie是错误的答案,因为用户所要做的就是使用其他浏览器/计算机或清除其Cookie以重新下载。

如果你迫不及待地想要这样做

在文件系统上创建指向真实文件的符号链接,并将该链接命名为与该键相同的链接。

处理页面请求时:

  1. 验证url字符串(以避免路径跳转等)
  2. 检查是否存在此链接,如果该链接不存在,则链接无效/已过期,因此显示错误
  3. 否则,将文件复制到回复
  4. 删除链接

答案 2 :(得分:0)

Cookie存储在客户端,而不是服务器端,因此这不是正确的选择。如果用户删除了您网站的cookie,他将能够规避任何基于cookie存在/价值的检查。

可以在发送链接时在服务器上创建具有特定名称的文件,并在访问该链接后将其删除。如果有人第二次尝试访问该链接,则“flag”文件将不存在,您将知道它是重复(或无效)链接。

(对于数据库会更好,基于文件的检查很难以非活泼的方式进行。)