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


How do I validate $_GET to allow only specific key

假设我当前的URL是

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

让我知道。。

好吧,你可以使用:

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

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

    $allowedKeys = array('page');

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

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

我可以这样做:

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