php – 如何防止用户为URL添加书签?

我的网站的网页通过使用GET从预定义的URL检索变量来显示网页.

例如,第一页上的代码:index.php

<p><a href="/blank.php?name1=value1&amp;name2=value2">next page</a></p>

第二页:blank.php?name1 = value1& amp; name2 = value2

$name1 = $_GET['name1'] ;
$name2 = $_GET['name2'] ;
echo $name1 ;
echo $name2 ;

这样就可以在现场创建网页,并显示类似于CMS的内容,并对我网站上的所有网页使用此方法,但如果用户为选项卡添加书签,则会显示该网页的过期信息,因为该网页内容已包含在URL中.

编辑:如果我使用post,他们是一个更好的方式将信息传达到新的网页?代替:

<form method="post" action="blank.php">
    <input type="hidden" name="name1" value="value1">
    <input type="submit">
</form>

最佳答案 快速而肮脏的解决方案:为您的网址添加时间戳参数,例如:

<p><a href="/blank.php?name1=value1&amp;name2=value2&amp;time=<?php echo time(); ?>">next page</a></p>

然后,在页面上,检查时间戳是否早于某个持续时间:

if(!isset($_GET['time']) || time() - intval($_GET['time']) > 60*60) {
    header('Location: index.php');
}

$name1 = $_GET['name1'] ;
$name2 = $_GET['name2'] ;
echo htmlspecialchars($name1);
echo htmlspecialchars($name2);

因此,如果链接超过一小时(60秒60分钟),则会重定向到主页!

但是这种方法不是非常用户友好!您最好尝试构建链接,以便在访问时永远不会获得旧内容!

点赞