就是说我要做表单编辑功能,里面有很多的数据,有<select> <input> <radio>这些,如果我没有改过里面的数据,然后就提交表单,做一个提示“编辑失败或数据没有更改过”,
在这过过程中怎么判断表单里的数据没有更改过,
就是说我要做表单编辑功能,里面有很多的数据,有<select> <input> <radio>这些,如果我没有改过里面的数据,然后就提交表单,做一个提示“编辑失败或数据没有更改过”,
在这过过程中怎么判断表单里的数据没有更改过,
post之后的数据md5加密就好啦,做一个数据表存储这个加密的编码,如果连续两次一样,那么可以肯定这个表单跟之前的表单提交的数据一样,这个时候就可以判断得到了。但是我不建议你这样做。
如果你只是为了避免表单重复提交,参考这里。
php表单加入Token防止重复提交
保存一份初试的表单数据,放在一个object
里面,当提交的时候,再获取一下当前表单的数据,放在另外一个object
里,再手动对比一下这两个object
。
PS: 如果用react
, vue
, angular
处理这类问题就比较简单了,因为他们都是操作的数据,数据的对比很简单。
简单的方法是监听所有表单元素的change事件,但是如果某个值被改了之后又恢复了,就不好说了。
再就是把表单所有值序列化后哈希,然后需要的时候比较哈希值,就知道数据是否发生了变化。这个哈希值可以放在前端,但是这样能不安全,因为任何前端的验证都是不可信的。所以如果要求高的话,可以放在服务器端,待表单提交后在服务器端验证。
如果是PHP 那么你的判断方式有误 因为很多时候更新是用execute 而这个则是返回的是受影响的行数失败则会出错,如果是没有改变数据就去更新,那么得到的会是1个0,所以,你的判断是有问题的. 只需要全等于false即可解决这个错误
首先题主是编辑数据,那么,被编辑的数据应该先发送到页面上,类似TP的$this->assign('name',$value);
,建议在做这个操作之前,先对(array)$value进行md5,将md5值存在session里,在用户提交数据的时候,先对提交上来的数据进行md5,然后跟session中的MD5进行对比,相同即用户没有编辑数据
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
5 回答1.9k 阅读
如果只考虑是否操作过,也就是说换过一次,再换回来也算更改过:做onChange绑定,只要有一个onChange被调用,把一个flag设为true就好了。