这是否足以验证php中的产品ID?

时间:2013-05-02 15:57:50

标签: php validation integer int

我正在使用codeigniter开展一个非常小的网上商店,项目数量非常有限。

在脚本开始时,产品模型获取整个产品列表,并将结果存储为数组作为此模型的属性。

产品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;

2 个答案:

答案 0 :(得分:2)

你错过了使用数据库的一个主要好处,就是它非常擅长这类事情。

您应该使用select * from products where id = :id等SQL查询在数据库中搜索所请求的产品,而不是将所有产品加载到内存中,然后在PHP中执行自己的搜索。

答案 1 :(得分:0)

Does this integer exceed the total number of products?

这并非总是如此。一旦他们删除了产品,就会失去同步。

那说更好的想法是将id转换为整数,并直接在DB上查询产品。不检查预加载的数组;这毫无意义。