PHP服务端对用户表单数据验证失败后,后退返回时怎样保留用户原来所填的数据
《PHP服务端对用户表单数据验证失败后,后退返回时怎样保留用户原来所填的数据》要点: 相关主题:PHP开发 / PHP缓存 我们经常用到这种需要: 用户填写了表单并提交,结果到了服务端验证失败了,并返回到表单页,但此时用户原来填写的内容都丢失了,需要重新填。 这个时侯,你的体验会很糟,那么如何在返回后仍然保留你的数据呢?脚本之家PHP对这个问题做了归纳: 一、常规方法:方法一:使用Header设置Cache-control方法: 在接收数据的服务器端一开始地方,加上这行: header('Cache-control: private,must-revalidate'); 方法二:使用session_cache_limiter方法 在开启session_start()之前调用 session_cache_limiter('private,must-revalidate'); private,must-revalidate表示按了浏览器的后退或者地址栏的回车时,该页面不会重新向服务器请求,表单数据也就不会丢失了。 代码: session_cache_limiter('private, must-revalidate'); session_start(); 上面2种方法都是可行的,除了上传的数据,如图片等无法保留,其它都很好留在原表单。第一种比较省资源。 但是,实际应用上并不理想,原因在于后退的动作,一般服务器提示出错后,用javascript控制后退,这时会有2种方法: history.go(-1); 或 history.back (); 这个在chrome执行的很完美,后退后数据得以保留(除了上传以外),但是,这两个后退脚本在IE和firefox下并不好用,数据并不会保留。 二、变通方法:推荐以下几种方法,以便在所有浏览器通用: 1、使用cookie:当页面数据不太大时,可以考虑此方法。每个cookie的大小限制在4KB以内,一个网站的cookie数量限制在30-50个。 2、使用localStorage:把数据放进localStorage里面,然后后退回来时读取localStorage。 3、使用SESSION暂存:不推荐,耗资源 4、使用GET传递:可以考虑。 附:小知识:Cache-Control消息头域说明:
(编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |