Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 创建个性化下载链接_Php_Html_Security - Fatal编程技术网

Php 创建个性化下载链接

Php 创建个性化下载链接,php,html,security,Php,Html,Security,如果我的项目存储在数据库中,用户可以在购买后下载,我如何提供每个用户不同的链接 我在想,正确的做法是:给他们一个链接,该链接以某种方式根据他们的用户id进行散列。然后,当我处理我给他们的链接时,我只是反转散列函数以获得原始链接。这是正确的做事方式吗 如果这不是正确的方法,请有人给我指出正确的方向吗?您应该在数据库中存储类似“下载令牌”的内容。当用户想要下载某个东西时,您可以创建一个新的令牌(例如,一个随机数),如果有多个东西需要下载,您可以使用它们的ID(例如)将其绑定到它们 在URL中,简单地

如果我的项目存储在数据库中,用户可以在购买后下载,我如何提供每个用户不同的链接

我在想,正确的做法是:给他们一个链接,该链接以某种方式根据他们的用户id进行散列。然后,当我处理我给他们的链接时,我只是反转散列函数以获得原始链接。这是正确的做事方式吗


如果这不是正确的方法,请有人给我指出正确的方向吗?

您应该在数据库中存储类似“下载令牌”的内容。当用户想要下载某个东西时,您可以创建一个新的令牌(例如,一个随机数),如果有多个东西需要下载,您可以使用它们的ID(例如)将其绑定到它们


在URL中,简单地将令牌作为GET变量发送。一旦用户下载了内容,就从数据库中删除令牌。

散列函数不能反转。我建议您阅读一下lighttpd的实现

它为您提供一个受保护的链接,在一定时间内有效。因为散列不能反转,所以需要在链接中传递信息的散列以及明文信息(如果可能)。例:

http://somesite.com/download.php?hash=<md5($secretkey.$userId.$documentId)>&usrId=<$userId>&documentId=<$documentId>
http://somesite.com/download.php?hash=&usrId=&documentId=

当你收到一个下载请求时,处理它,将它与给定的一个比较,如果它是相等的,那么你就考虑验证它。