【问题标题】:URL parameter not working accept if placed first in order如果按顺序排列,URL 参数不起作用接受
【发布时间】:2020-03-23 09:07:40
【问题描述】:

在访问包含某个参数的链接时,我试图隐藏一些元素。 但它只有在 source=app 是所有参数中的第一个时才有效,下面是我的意思的示例,按参数的顺序。

URL 参数 URL 工作示例

https://url.com/app.php?source=app&order_id=274&order_name=phone-black

URL 参数 URL 不工作示例

https://url.com/app.php?order_id=274&order_name=phone-black&source=app

注意两个 url 中的 location source=app 参数

我使用下面的代码来隐藏元素

<?php if(!isset($_GET['source']) || $_GET['source'] != "app"): ?> HTML <?php endif; ?>

有什么我错过的吗?

【问题讨论】:

  • 你到底错过了什么?如果 HTML 文本没有显示,那么它实际上正在工作,否则检查供应参数是否正确
  • @WanPeninsula 注意到两个 url 中的 location source=app 参数,在第一个中它隐藏了它,因为它被放置在第一个但不是在最后放置的第二个中,我需要将它放在最后并且工作
  • 我真的很想念你的 hide 解释。如果我猜对并且您不需要它,只需在您的代码中忽略它,它应该可以正常工作而不会中断。
  • @WanPeninsula hide 表示不根据 url 参数在我的页面中显示某些部分,例如我想在链接时隐藏(或不显示)网站标题使用 source=app 参数访问

标签: php html url parameters


【解决方案1】:

您需要urlencode您的网址以避免特殊字符为&

$url = "https://url.com/app.php?".urlencode("source=app&order_id=274&order_name=phone-black");

这会导致

https://url.com/app.php?source%3Dapp%26order_id%3D274%26order_name%3Dphone-black

并且应该适用于所有浏览器。

【讨论】:

    【解决方案2】:

    据我了解,您希望根据 URL 参数隐藏 Web 应用程序的某些部分,为此,我希望以下代码对您有所帮助:

    $header = true;
    
    if ( isset( $_GET['source'] ) ) {
        if ( $_GET['source'] == 'app' ) {
            $header = false;
        }
    }
    
    if ( $header === true ) {
        // Your HTML
    }
    

    现在,您的代码将在不考虑参数顺序的情况下运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      相关资源
      最近更新 更多