Codeigniter将数据添加到数据库然后处理它

时间:2014-05-13 14:21:44

标签: php codeigniter

我正在使用codeigniter构建一种在线商店。 我想创建一个流程订单功能,以验证客户输入的订单的详细信息。

我被困了,因为在最后一页我有数据提交,当我点击我去main / process_order,我在表中插入数据,然后使用curl与另一台服务器通信。

我的问题是:当我点击提交然后在process_order页面停止如果我重新加载1000次,该表将填充相同的1000行,因此这可能是一个安全问题。此外,如果我创建一个函数将数据添加到db然后重定向到process_order,这将是另一个问题,因为我仍然需要我发布的数据。

解决此问题的最佳方法是什么。我希望我尽可能清楚地说明。 代码:

$data=array(        
        'userid' => $userid,
        'email' => $email_data,   
        'phone' => $this->input->post('phone'),
        'discount' => $this->input->post('discount'),       
        'price' => $this->input->post('price'),
        'final_price' => $this->input->post('final_price'),
        'client_data' => $this->input->post('client_info'),
        'client_ip' => $this->input->post('client_ip'),
        'time' => $date
        );

    $this->db->insert('orders_temp', $data); 

1 个答案:

答案 0 :(得分:0)

也许这样的事情会有所帮助。在插入数据之前检查用户标识和时间。您需要确保搜索唯一的数据库字段(除非时间字段是全时)

$data=array(        
    'userid' => $userid,
    'email' => $email_data,   
    'phone' => $this->input->post('phone'),
    'discount' => $this->input->post('discount'),       
    'price' => $this->input->post('price'),
    'final_price' => $this->input->post('final_price'),
    'client_data' => $this->input->post('client_info'),
    'client_ip' => $this->input->post('client_ip'),
    'time' => $date
 );

if (<!--CONDITIONAL STATEMENT-->)
{
    $this->db->insert('orders_temp', $data); 
}