【问题标题】:Check query string (PHP)检查查询字符串 (PHP)
【发布时间】:2009-10-21 07:07:27
【问题描述】:

我使用查询字符串,例如test.php?var=1

我如何检查用户是否在此之后键入了任何内容,例如另一个字符串...

如果任何其他字符串(查询字符串)跟随我的var 查询字符串,我会尝试重定向到 index.php。

这个可以查吗?

例如:

test.php?var=12134 (这是一个很好的链接..) test.php?a=23&var=123 (这是一个错误的链接,重定向到索引..) test.php?var=123132&a=23 (这是一个错误的链接,重定向到索引..)

【问题讨论】:

    标签: php query-string


    【解决方案1】:

    我不确定我是否完全理解您想要什么,但如果您对参数的定位不感兴趣,这应该可以:

    if ( isset($_GET['var']) && count($_GET) > 1 ) {
        //do something if var and another parameter is given
    }
    

    【讨论】:

    • 我只有一个查询参数,所以这个解决方案对我有好处..非常感谢。
    【解决方案2】:

    查看$_SERVER['QUERY_STRING']

    【讨论】:

      【解决方案3】:

      与 Tom Haigh 的回答类似,您也可以得到您期望的论点和实际得到的论点的差异:

      $argKeys = array_keys($_GET);
      $additionalArgKeys = array_diff($argKeys, array('var'));
      var_dump($additionalArgKeys);
      

      【讨论】:

        【解决方案4】:

        test.php?a=23?var=123(这是一个错误的链接,重定向到索引..)

        在这种情况下,您只发送了一个名为“a”的变量,其中包含值“a?var=123”,因此对您来说应该不是问题。

        test.php?var=123132&a=23(这是一个错误的链接,重定向到索引..)

        在这种情况下,您发送了两个变量(“a”和“var”)。

        一般而言,您可以使用count($_GET) 检查$_GET 数组以查看已发送的变量数量并采取相应措施。

        【讨论】:

        • 我编辑了我的问题,但您的解决方案与汤姆相同。谢谢!
        【解决方案5】:

        我认为您正在尝试删除不需要的参数。这通常是出于安全原因。

        但是,如果您预先初始化您使用的每个变量并且只使用带有 $_GET['var']、$_POST['var'] 或 $_REQUEST['var'] 的变量,则不会有问题。

        【讨论】:

          猜你喜欢
          • 2021-01-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-28
          相关资源
          最近更新 更多