我正在尝试创建“返回搜索结果”链接,以便返回上一页。
基本上你可以进行搜索,然后进入单个帖子页面。在这个页面中,我想创建链接。
我试过了:
<?php
$url = htmlspecialchars($_SERVER['HTTP_REFERER']);
echo "<a href='$url'>back</a>";
?>
但它只会将你送回上一页(让我们说有人从谷歌进入网站......那么我会把他带回谷歌。)
有什么想法吗?
谢谢!
答案 0 :(得分:0)
'HTTP_REFERER' 将用户代理引用到当前页面的页面地址(如果有)。这是由用户代理设置的。并非所有用户代理都会设置此功能,有些用户可以将HTTP_REFERER修改为功能。简而言之,它无法真正被信任。
来源:http://www.php.net/manual/en/reserved.variables.server.php
所以你应该想到另一种重新创建URL的方法。尝试使用您正在执行的搜索将URL作为POST变量发送。然后,您只需从$_POST
中阅读。
答案 1 :(得分:0)
最后,我设法使用$_SESSION
变量:
在点击搜索后加载的页面(通常是archive.php或类似的)我在页脚之前添加了这段代码:
<?php
if (isset($_SERVER["REQUEST_URI"])) {
$_SESSION['url'] = $_SERVER["REQUEST_URI"];
}
?>
然后,我在下面的代码中添加了以下代码:
<div class="back-to-search">
<?php if (isset($_SESSION['url'])) : ?>
<a href="<?php echo $_SESSION['url']; ?>">Back To Search</a>
<?php else: ?>
<a href="<?php echo get_home_url(); ?>">Back To Search</a>
<?php endif;?>
</div>
所以基本上如果从搜索结果中设置了$_SESSION
,它会将您带回到结果中。如果没有(例如,如果您直接从谷歌等到达)该链接将重定向到主页(默认情况下显示所有列表)