PHP如何在页面加载之前将查询字符串附加到URL
Posted
技术标签:
【中文标题】PHP如何在页面加载之前将查询字符串附加到URL【英文标题】:PHP How to append a query string to a URL before page load 【发布时间】:2018-03-19 05:32:52 【问题描述】:我有一个包含嵌入式数据库报告表单的页面(在 Wordpress 中)。该表单被配置为根据页面 URL 的查询字符串过滤结果。查询字符串是特定于用户的,以便每个用户都能看到适用于他们的结果。
我在页面模板中编写了一个 php 脚本,它生成了正确的 URL,并添加了查询字符串。我现在想做的是使用该 url+query 重新加载页面,但不会陷入无休止的重定向循环!
下面的代码做了我想要的,除了它(显然)卡在一个循环中!我尝试过使用exit
或die
命令,但这似乎没有帮助。
<?php
$user_info = get_userdata(1);
$url = esc_url(add_query_arg( array(
'tbl_invites_username' => $user_info->user_number,
'tbl_events_event_id' => '1'),
'http://www.example.com/' ));
header("location: " .$url);
?>
我是新手,所以我很欣赏可能有完全不同的方法来实现相同的结果 - 我愿意接受建议!
基本上,当用户单击指向包含表单的页面的链接时,我希望他们看到一个为他们过滤结果的表单。
【问题讨论】:
您的问题可以使用更多上下文。<a href="'.$url.'">here</a>
可以解决问题。如果你有 url:http://localhost:3000/?this=that
你可以使用echo $_GET['this']
输出that
【参考方案1】:
您可以先check the current URL 看看它是否匹配,然后再发送重定向标头。
<?php
$user_info = get_userdata(1);
$url = esc_url(add_query_arg( array(
'tbl_invites_username' => $user_info->user_number,
'tbl_events_event_id' => '1'),
'http://www.example.com/' ));
// https://***.com/a/6768831/4233593
if ($url != "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]")
header("location: " .$url);
?>
【讨论】:
谢谢杰夫 - 我不敢相信我以前没有想到这一点!我只见树木不见森林。一个优雅的解决方案。以上是关于PHP如何在页面加载之前将查询字符串附加到URL的主要内容,如果未能解决你的问题,请参考以下文章