Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.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一次性下载liks?_Php_Mysql - Fatal编程技术网

用php一次性下载liks?

用php一次性下载liks?,php,mysql,Php,Mysql,我正在尝试用php创建一个一次性下载链接,因为我的客户希望在他们的网站上出售公共汽车旅行票。我是一个乞丐/从未真正编写过自己的php,我正在尝试为门票创建一个一次性下载链接。问题是,凭证也是由php动态创建的,链接中存储了一个变量,否则我只能使用cms的内置函数。但是,我想创建一个指向页面的一次性链接,将用户重定向到带有重定向的页面 如果有人能概述一下创建一次性链接的过程,这将是非常值得赞赏的,如果有人能提供一些示例代码,那将是非常棒的 谢谢,, 托马斯提纲如下: 生成唯一的ID-可以使用 将

我正在尝试用php创建一个一次性下载链接,因为我的客户希望在他们的网站上出售公共汽车旅行票。我是一个乞丐/从未真正编写过自己的php,我正在尝试为门票创建一个一次性下载链接。问题是,凭证也是由php动态创建的,链接中存储了一个变量,否则我只能使用cms的内置函数。但是,我想创建一个指向页面的一次性链接,将用户重定向到带有重定向的页面

如果有人能概述一下创建一次性链接的过程,这将是非常值得赞赏的,如果有人能提供一些示例代码,那将是非常棒的

谢谢,, 托马斯

提纲如下:

  • 生成唯一的ID-可以使用
  • 将其插入数据库
  • 向以某种方式使用该ID的用户发送链接,如/download/{ID}
  • 当用户转到链接时,在数据库中注册该链接已被使用
然后确保下载脚本检查该id以前是否使用过。

大纲如下:

  • 生成唯一的ID-可以使用
  • 将其插入数据库
  • 向以某种方式使用该ID的用户发送链接,如/download/{ID}
  • 当用户转到链接时,在数据库中注册该链接已被使用

然后确保下载脚本检查该id以前是否被使用过。

您需要在数据库中存储某种标识符,并在访问后将其删除。所以它是这样工作的:

  • 用户购买产品,您的脚本在数据库中创建一个新表
  • Person下载产品,您的脚本将删除该行

您需要在数据库中存储某种标识符,并在访问后将其删除。所以它是这样工作的:

  • 用户购买产品,您的脚本在数据库中创建一个新表
  • Person下载产品,您的脚本将删除该行

在不详细了解您的环境的情况下,这里介绍了该过程的总体思路,以及数据层的一些示例思路

您的门票表结构必须如下所示:

  • id-主键
  • transaction_id-应该是另一个表的数字id,您可以在其中存储购买的交易信息,该信息可以在另一个查询中加入
  • uniq_键-这可以是用于票证检索的url的字符串,使用
    uniqid
    或使用
    md5
    散列某些内容构建。在SO上可以找到许多生成GUI的好方法
  • 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
    或使用
    md5
    散列某些内容构建。在SO上可以找到许多生成GUI的好方法
  • used-一个布尔值,表示票据是否已下载。购买时,默认值为0(false),下载后更新为1(true)
  • 时间戳-可设置为在检索时更新的时间戳
对于这样的应用程序,有些开发人员宁愿删除该行,也不愿使用该布尔值,但这取决于存档此数据是否与您的业务逻辑相关。通常你可以在si上播放