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 重新加载页面,但不会陷入无休止的重定向循环!

下面的代码做了我想要的,除了它(显然)卡在一个循环中!我尝试过使用exitdie 命令,但这似乎没有帮助。

<?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);

?>

我是新手,所以我很欣赏可能有完全不同的方法来实现相同的结果 - 我愿意接受建议!

基本上,当用户单击指向包含表单的页面的链接时,我希望他们看到一个为他们过滤结果的表单。

【问题讨论】:

您的问题可以使用更多上下文。 &lt;a href="'.$url.'"&gt;here&lt;/a&gt; 可以解决问题。如果你有 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的主要内容,如果未能解决你的问题,请参考以下文章

在页面加载时将正斜杠附加到url的末尾

PHP将变量附加到地址栏中的url

如何将其他文本附加到 UIWebView

如何自动将查询字符串附加到 laravel 分页链接?

如何使用 jQuery 和 Django 分页附加数据页面?

如何将查询字符串附加到错误文档