比较表格提交前后的数据

时间:2015-08-20 13:42:52

标签: php forms codeigniter serialization

我有一个表单页面,其中许多元素保存到我的数据库中的不同表和不同的行。为了最小化db调用,我想比较表单提交之前和之后的数据,然后我可以编写一个只更新已更改数据的函数。为此,我将保存用于在会话文件中构建表单的数组:

$this->session->set_tempdata('form_values_'.$item['id'],json_encode($item), 86400);

在表单提交时,我检索此数据并将其与$ _POST:

进行比较
$pre_post = json_decode($_SESSION['form_values_'.$_POST['id']], true);

除了少数几个有"。在我的测试数据中。由于某些原因,即使我没有改变数据,这些字段也会变回不相等。

这绝对是导致问题的时期,当我删除它时它工作正常。另一方面,还有其他textareas,其周期不会导致问题。

我认为这可能是codeigniter的XSS过滤,但我删除了它并没有区别。

最初我使用序列化对数组进行编码以进行存储,但我切换到json_encode并再次没有区别。

以下是我用来比较值的代码:

$pre_post = json_decode($_SESSION['form_values_'.$_POST['id']], true);
$post = $this->security->xss_clean($_POST);
foreach ($post as $key => $value) {
    if( !isset($pre_post[$key]) || trim($value)!=trim($pre_post[$key]) ){
        $post_post[$key] = $value; 
    }
}

有什么想法吗?

0 个答案:

没有答案