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

发布于 2025-01-06 19:24:15 字数 370 浏览 2 评论 0原文

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

让我知道..

Let's say my current URL is

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

How do I validate on this page to allow only $_GET['page']?

If user type on URL something below, will go to error page.

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

Let me know..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

擦肩而过的背影 2025-01-13 19:24:15

好吧,你可以使用:

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

Well, you could use:

if( count($_GET) > 1 || !isset($_GET['page'])) { /*error*/ }
樱花坊 2025-01-13 19:24:15

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

You should care only of GET/POST variables used in your application. Validate and escape them accordingly, check if they're set. The rest should be ignored - you don't need to care of them and display errors.

断舍离 2025-01-13 19:24:15
    $allowedKeys = array('page');


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

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

    $allowedKeys = array('page');


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

You won't have to worry about your undesired parameters and values, as they will not be accepted via the $_GET method. With the above code, the only allowed $_GET parameters is 'page'

心如荒岛 2025-01-13 19:24:15

我可能会这样做:

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

I might do this:

<?php
if ($_GET)
  {
    foreach($_GET as $key=>$value)
      {
        if($key!='page')
          {
            $error=true;
          }
      }
  }
?>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文