我有一个CodeIgniter脚本,用户被重定向到表单并返回,返回后,只有一次某些东西(使用外部API的金融交易)应该发送给用户。
首先,我所做的只是完成标记(UPDATE table SET completed = 1 WHERE id = X
)
在发送之前,我使用if(intval($completed) === 1){//STOP SENDING}
进行了检查。
但后来我想如果他们多次打开页面太快(意外或手动或使用其他方法)会怎么样,所以这就是我做的:
我在数据库中添加了一个新表,使用唯一键(订单ID),然后将事物发送给用户我在此表中插入一行(如果已插入)(我使用CodeIgniter' s {{1我发送它,如果没有(复制唯一键阻止多次插入),然后我停止发送。
这种做法是否可以确保它不会被发送两次给用户?
很抱歉,如果我不够清楚,我谈到的这件事(应该只发送给用户一次)不是消息,它是某种使用其他API发送给用户的金融交易
答案 0 :(得分:0)
如果您想让变量仅存在于下次用户进入页面,您最好使用flashdata
:
CodeIgniter支持“flashdata”或仅可用于下一个请求的会话数据,然后自动清除。
codeigniter 2和codeigniter 3都支持:
// set data
$this->session->set_flashdata('item', 'value');
// get data
$this->session->flashdata('item');