我正在使用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);
答案 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);
}