【发布时间】:2013-05-02 15:57:50
【问题描述】:
我正在一个非常小的网上商店工作,使用 codeigniter 的项目数量非常有限。
在脚本开始时,products 模型获取整个产品列表并将结果作为数组存储为该模型的属性。
产品 ID 只是数据库中自动递增的主键。因此,当有人将产品添加到购物车时,ID 会通过 POST 发送。然后我检查了三件事:
- $id 可以是整数吗?
- 这个整数是否超过产品总数?
- 此整数是否与产品 ID 匹配?
基本上 - 虽然稍微简化了 - 我这样做:
// Count total number of items
$total = count($this->productArray)
if (!(int)$id || $id > $total)
return false;
foreach($this->productArray as $product) {
if ($product['id'] == $id)
return true;
}
return false;
【问题讨论】:
-
"这个整数是否超过产品总数?" -- 这是一个糟糕的测试,因为自动递增的值不能保证是连续的。例如,如果您有 1、2、4,那么您只有 3 个产品,但 4 是有效 ID。
-
哇!谢了哥们!太傻了,我自己也应该想到的。
标签: php validation integer int