假设我当前的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;
}
}
}
?>