我有一个页面http://www.mysite.com/newsletter.php
现在,当我向您发送电子邮件并且您访问此页面以查看您的电子邮件/用户名时,我想在其中添加变量。
所以我通过电子邮件向您发送此链接http://www.mysite.com/newsletter.php?user=email@email.com
现在,当您访问此链接时,您将在该页面上看到您的电子邮件/用户名为“Hello email@email.com,查看新博客”
我用
在该页面上写了用户名/电子邮件<?php echo $_GET['user']; ?>
现在,您如何在访问此页面后使其过期?我的意思是我只想访问它一次!
*的 EDITED
查看我已使用的代码,以生成过期的唯一链接:
<?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&amp; user=email@email.com 以获取电子邮件@ email .com由<?php echo $_GET['user']; ?>
在下一页。
抱歉我的英语不好。
答案 0 :(得分:4)
将状态变量存储在数据库中,当您访问该页面时,将该电子邮件与存储在目前为止有0次访问的数据库中的电子邮件进行比较,将状态变量更新为显示visited = 1,下次再次显示打开url,查看状态变量,从1开始,不要显示该页面。
答案 1 :(得分:1)
如果您想避免与数据库交互,您还可以创建一个cookie,然后在有人导航到http://www.mysite.com/newsletter.php时查看cookie。唯一的问题是,当用户清除他/她的cookie时,页面将再次出现。
答案 2 :(得分:1)
试试这个:
您只能安全地使用数据库更新机制执行此操作。 将数据库字段设置为0默认值,并在用户访问该页面后将其设为1。
例如,
在某些网站中,您可以在忘记密码链接页
中找到这些选项答案 3 :(得分:0)
另一个选项是使用客户端缓存。我们可以在用户第一次访问时保存cookie,在下次访问时我们可以检查用户是否先前访问并显示他的消息。 http://plugins.jquery.com/project/Cookie
答案 4 :(得分:0)
只需在K中添加一个额外的列。这将存储页面的状态。当用户访问您的页面时。只需更改状态即可。并且不允许状态更改的页面。您可以轻松地在数据库查询中进行微小更改。这将消除使用session
和cookies
维护的大量负担。