如何验证$ _GET以仅允许特定密钥

时间:2012-02-17 02:30:23

标签: php get

假设我当前的网址是

http://domain.com/category/cars/?page=2

如何在此页面上验证仅允许$_GET['page']

如果用户在URL上键入以下内容,则会转到错误页面。

http://domain.com/category/cars/?page=2&bar=foo
http://domain.com/category/cars/?foo=bar&page=2
http://domain.com/category/cars/?foo=bar&bar=foo

让我知道..

4 个答案:

答案 0 :(得分:4)

好吧,你可以使用:

if( count($_GET) > 1 || !isset($_GET['page'])) { /*error*/ }

答案 1 :(得分:0)

您应该只关心应用程序中使用的GET / POST变量。相应地验证并转义它们,检查它们是否已设置。其余部分应该被忽略 - 您不需要关心它们并显示错误。

答案 2 :(得分:0)

    $allowedKeys = array('page');


    $_GET = array_intersect_key($_GET, array_flip($allowedKeys));

您不必担心不需要的参数和值,因为它们不会通过$_GET方法接受。使用上面的代码,唯一允许的$_GET参数是“page”

答案 3 :(得分:0)

我可能会这样做:

<?php
if ($_GET)
  {
    foreach($_GET as $key=>$value)
      {
        if($key!='page')
          {
            $error=true;
          }
      }
  }
?>