创建具有到期时间的唯一链接(一次单击)

时间:2013-10-15 15:13:07

标签: php

我想为我的简报创建唯一的链接(一次点击)。

查看步骤:

  1. 我将创建一个链接,或者可以是一个可以创建链接的脚本http://www.example.com/page.php?unique=email@email.com

  2. 我的订阅者将收到包含此链接的简报。

  3. 他们点击/访问此简报/链接。

  4. 如果他们想再次访问它们,则链接将过期,订阅者将被重定向到其他页面http://www.example.com/expired.php

  5. 那么有没有机会创造这个?如何实现这一目标?

    我有这段代码

    <?php
    
        include("variables.php");
    
        $password = trim($_SERVER['QUERY_STRING']);
    
        if($password == ADMIN_PASSWORD) {
            // Create a new key
            $new = uniqid('key',TRUE);
    
            if(!is_dir('keys')) {
                mkdir('keys');
                $file = fopen('keys/.htaccess','w');
                fwrite($file,"Order allow,deny\nDeny from all");
                fclose($file);
            }
    
            $file = fopen('keys/keys','a');
            fwrite($file,"{$new}\n");
            fclose($file);
    ?>
    

    此脚本位于名为generate.php的文件中,如果我访问此网址(http://www.example.com/generate.php?1234 - 1234是生成唯一ID的密码),则会生成一个类似此http://www.example.com/page.php?key525e1200e3a5f9.19949496的唯一链接将只有一次可用!

    现在我想要的是访问http://www.example.com/generate.php?1234&s=email@email.com

    这会生成一个唯一的链接http://www.example.com/page.php?key525e1200e3a5f9.19949496&s=email@email.com

    这是受保护的下载页面!我需要将用户电子邮件添加到下载页面,这将通过链接生成。 's'是下载页面使用$ _GET ['s']

    获取的变量

    了解我的意思?

1 个答案:

答案 0 :(得分:2)

我会使用那里的电子邮件。

然后使用以下语句执行PHP页面。 请求GET(在这种情况下是电子邮件地址)并检查它是否存在于数据库表中(让我们调用它 - hasvisited)。

如果存在,则重定向到您想要的页面。

如果不存在那么...... 1.)将其添加到DB。 2.)显示1页时间。

当第1步发生时。它会阻止用户再次访问。

如果您想将此限制为一组特定用户 - 正如上述解决方案,人们可​​以通过理论输入任何内容来超越此...

我会创建一个包含用户的表,并在名为“visits”的列上执行IF状态,如果为1或更少,则允许并向访问列添加+1。如果超过1,请访问然后重定向。

我希望这是有道理的 - 使用PHP,MySQL DB和简单的IF语句实现也应该相当简单。