【发布时间】:2012-03-13 17:52:12
【问题描述】:
我是 PHP 新手,这个问题似乎很愚蠢。
但我真的对关联数组 $_GET 感到困惑,它可以帮助我访问通过 URL 发送的所有参数。
假设我期待一个 product_ID 字符串,并在代码中这样写:
$id = $_GET['prod_id'];
Get_Data($id);
而 Get_Data() 是一个函数,它期望唯一的参数是字符串,而不是数组。 如果一些坏人在网址中输入类似这样的内容怎么办:
.../product.php?prod_id[]=1&prod_id[]=2
使用$_GET['prod_id'] 的方法将返回一个数组(1,2) 而不是字符串。这可能会在我的应用程序中导致一些非常糟糕的问题。
现在,问题是:有没有一种全局方法可以避免上述情况?
[编辑]
有时我想从 $_GET['prod_id'] 获取数组而不是字符串(例如:从多选框获取数据,用户可以在其中选择超过 1 个产品)
我是否可以检查返回的数组是否具有正确的结构(一维数组,带有无辜数据)或被这样的坏人欺骗:
.../product.php?prod_id[a]=1&prod_id[b]=2&prod_id[c]=3&prod_id[d]=4
我认为将具有复杂结构的数组传递给 php $_GET 非常容易,但对于编码人员来说很难检查它是否是他们需要的正确结构。
你能告诉我吗?谢谢!
【问题讨论】:
-
用技术术语来说,如果有人破解了 url 以将该参数更改为数组表示法,那么您将数组传递给您的函数。根据您使用该值的方式,它可能会自动转换为简单地说
Array的字符串。