1

我有一个页面http://www.mysite.com/newsletter.php

现在,当我向您发送电子邮件并且您访问此页面以查看您的电子邮件/用户名时,我想在其中放置一个变量。

所以我给你发了这个链接http://www.mysite.com/newsletter.php?user=email@email.com

现在,当您访问此链接时,您将在该页面上看到您的电子邮件/用户名“您好 email@email.com,查看新博客”

我在该页面上写下用户名/电子邮件

<?php echo $_GET['user']; ?>

现在我怎样才能让这个页面在你访问后过期?我的意思是我只想参观一次!

*已编辑

查看我已经用来生成过期的唯一链接的代码:

<?php

    include("variables.php");

    $password = trim($_SERVER['QUERY_STRING']);

    if($password == ADMIN_PASSWORD) {
        $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);
?>

<html>
    <head>
        <title>Page created</title>
        <style>
            nl { 
                font-family: monospace 
            }
        </style>
    </head>
    <body>
        <h1>Page key created</h1>
        Your new single-use page link:<br>
        <nl>
        <?php 
            echo "http://" . $_SERVER['HTTP_HOST'] . DOWNLOAD_PATH . "?" . $new; 
        ?></nl>
    </body>
</html>

<?php
    } else {

        header("HTTP/1.0 404 Not Found");
    }
?>`

此外,此代码将在 36 小时内到期,并由 variables.php 设置

<?

    define('PROTECTED_DOWNLOAD','download.php');

    define('DOWNLOAD_PATH','/.work/page.php');

    define('SUGGESTED_FILENAME','download-doc.php');

    define('ADMIN_PASSWORD','1234');

    define('EXPIRATION_DATE', '+36 hours');

    header("Cache-Control: no-cache, must-revalidate");
    header("Expires: ".date('U', strtotime(EXPIRATION_DATE)));

?>

此 php 文件生成如下链接: http://www.mysite.com/page.php?key1234567890 现在如何在 uniqid 旁边添加变量 user=email@email.com 以生成如下链接:page.php ?key1234567890&user=email@email.com可以<?php echo $_GET['user']; ?>在下一页获取 email@email.com。

对不起,我的英语不好。

4

5 回答 5

4

在数据库中存储一个状态变量,当您访问该页面时,将电子邮件与存储在数据库中的电子邮件进行比较,到目前为止访问次数为 0,更新状态变量以显示visited=1,下次打开相同的 url ,查看状态变量,因为它是 1,所以不要显示该页面。

于 2013-10-17T03:34:08.843 回答
1

如果您想避免与数据库交互,您还可以创建一个 cookie,然后在有人导航到http://www.mysite.com/newsletter.php时查看 cookie 。唯一的问题是当用户清除他/她的 cookie 时页面会再次出现。

于 2013-10-17T03:37:38.403 回答
1

试试这个:

您只能使用数据库更新机制安全地执行此操作。将数据库字段设置为默认值 0,并在用户访问该页面后将其设置为 1。

例如,

在某些网站中,您可以在忘记密码链接页面中找到此类选项

于 2013-10-17T04:53:26.140 回答
0

另一种选择是为此使用客户端缓存。我们可以在用户第一次访问时保存 cookie,下次访问时我们可以检查用户是否更早访问并显示他的消息。 http://plugins.jquery.com/project/Cookie

于 2013-10-17T03:41:22.183 回答
0

只需在您的 K 中添加一个额外的列。它将存储页面的状态。当用户访问您的页面时。只是改变状态。并且不允许状态发生变化的页面。您可以通过对数据库查询的微小更改轻松地做到这一点。这将消除大量维护使用sessionand的负担cookies

于 2013-10-17T03:46:10.153 回答