用php一次性下载liks?
我正在尝试用php创建一个一次性下载链接,因为我的客户希望在他们的网站上出售公共汽车旅行票。我是一个乞丐/从未真正编写过自己的php,我正在尝试为门票创建一个一次性下载链接。问题是,凭证也是由php动态创建的,链接中存储了一个变量,否则我只能使用cms的内置函数。但是,我想创建一个指向页面的一次性链接,将用户重定向到带有重定向的页面 如果有人能概述一下创建一次性链接的过程,这将是非常值得赞赏的,如果有人能提供一些示例代码,那将是非常棒的 谢谢,, 托马斯提纲如下:用php一次性下载liks?,php,mysql,Php,Mysql,我正在尝试用php创建一个一次性下载链接,因为我的客户希望在他们的网站上出售公共汽车旅行票。我是一个乞丐/从未真正编写过自己的php,我正在尝试为门票创建一个一次性下载链接。问题是,凭证也是由php动态创建的,链接中存储了一个变量,否则我只能使用cms的内置函数。但是,我想创建一个指向页面的一次性链接,将用户重定向到带有重定向的页面 如果有人能概述一下创建一次性链接的过程,这将是非常值得赞赏的,如果有人能提供一些示例代码,那将是非常棒的 谢谢,, 托马斯提纲如下: 生成唯一的ID-可以使用 将
- 生成唯一的ID-可以使用
- 将其插入数据库
- 向以某种方式使用该ID的用户发送链接,如/download/{ID}
- 当用户转到链接时,在数据库中注册该链接已被使用
- 生成唯一的ID-可以使用
- 将其插入数据库
- 向以某种方式使用该ID的用户发送链接,如/download/{ID}
- 当用户转到链接时,在数据库中注册该链接已被使用
然后确保下载脚本检查该id以前是否被使用过。您需要在数据库中存储某种标识符,并在访问后将其删除。所以它是这样工作的:
- 用户购买产品,您的脚本在数据库中创建一个新表
- Person下载产品,您的脚本将删除该行
- 用户购买产品,您的脚本在数据库中创建一个新表
- Person下载产品,您的脚本将删除该行
- id-主键
- transaction_id-应该是另一个表的数字id,您可以在其中存储购买的交易信息,该信息可以在另一个查询中加入
- uniq_键-这可以是用于票证检索的url的字符串,使用
或使用uniqid
散列某些内容构建。在SO上可以找到许多生成GUI的好方法md5
- used-一个布尔值,表示票据是否已下载。购买时,默认值为0(false),下载后更新为1(true)
- 时间戳-可设置为在检索时更新的时间戳
$\u GET
超全局的url路由,或者类似的方法
输出票证下载的端点必须首先查询唯一id,其中布尔值为false,并且返回一行,允许下载,然后运行另一个更新查询,然后将使用的布尔值设置为true。如果未返回任何行(无效id或已检索票证),则拒绝下载
通过使用header()
函数设置mimetype和Content-Disposition头,可以将下载内容直接输出到浏览器。理想情况下,所有这些逻辑都可以在一个输出端点中
如果您还没有使用一些框架,我建议您研究一些东西,至少可以为您设置url路由,使您的生活更加轻松。Kohana、CodeIgniter和CakePHP都非常适合这个问题域
还考虑业务逻辑的需要——真的只需要一次下载吗?如果票证有一些唯一标识符,如序列号或
uniqid()
,当票证可以在兑换时验证时,是否真的有必要限制这样的下载?我不知道你的要求,但我知道如果ticketmaster不让我再次下载我的车票,我会非常高兴的,如果我把它忘在离合器中:)
祝你好运。在不详细了解您的环境的情况下,这里介绍了流程的基本概念,以及数据层的一些示例概念 您的门票表结构必须如下所示:
- id-主键
- transaction_id-应该是另一个表的数字id,您可以在其中存储购买的交易信息,该信息可以在另一个查询中加入
- uniq_键-这可以是用于票证检索的url的字符串,使用
或使用uniqid
散列某些内容构建。在SO上可以找到许多生成GUI的好方法md5
- used-一个布尔值,表示票据是否已下载。购买时,默认值为0(false),下载后更新为1(true)
- 时间戳-可设置为在检索时更新的时间戳