session_start()导致history.go(-1)返回时无法保存表单数据的解决方法
2014-09-22 16:51
465 查看
问题背景:
在填写完表单提交时,由于某个表单项可能填写的不合法,导致提交失败,返回表单页面。但返回后所有的表单都被清空了,重新填写比较麻烦,度娘解释说,是由于每个页面都调用了session_start()的原因,在js返回上一页时,不能保存住表单信息。
解决方法:
在公共初始化文件的session_start()之后加入一句:
header('cache-control:private,must_revalidate')
或:
session_cache_limiter('private')
加入上面这个header后,当表单再次提交失败返回时,页面将正常的保存住所有填写的表单信息,包括input、select等,当然也可以解决在返回页面时提示“页面已过期”的警告。
工作原理:
正常的在返回上一页时,我们浏览器访问的是缓存的页面,而如果脚本中使用了session_start()函数后,脚本会强制让浏览器不缓存页面,浏览器会重新访问服务器刷新页面,所以当点击返回,或使用go(-1)方式向上跳转时会提示页面已过期、表单内容被清空的现象。
在填写完表单提交时,由于某个表单项可能填写的不合法,导致提交失败,返回表单页面。但返回后所有的表单都被清空了,重新填写比较麻烦,度娘解释说,是由于每个页面都调用了session_start()的原因,在js返回上一页时,不能保存住表单信息。
解决方法:
在公共初始化文件的session_start()之后加入一句:
header('cache-control:private,must_revalidate')
或:
session_cache_limiter('private')
加入上面这个header后,当表单再次提交失败返回时,页面将正常的保存住所有填写的表单信息,包括input、select等,当然也可以解决在返回页面时提示“页面已过期”的警告。
工作原理:
正常的在返回上一页时,我们浏览器访问的是缓存的页面,而如果脚本中使用了session_start()函数后,脚本会强制让浏览器不缓存页面,浏览器会重新访问服务器刷新页面,所以当点击返回,或使用go(-1)方式向上跳转时会提示页面已过期、表单内容被清空的现象。
相关文章推荐
- session_start()导致history.go(-1)返回时无法保存表单数据的解决方法
- session_start()导致history.go(-1)返回时无法保存表单数据的解决方法
- history.go(-1)后表单数据不能保存是由session_start()造成的,解决办法
- history.go(-1)无法获取表单数据的解决方法
- 无法保存中间表关系数据的解决方法
- 在使用Ajax请求返回json数据的时候IE浏览器弹出下载保存对话框的解决方法
- $.ajax返回的JSON格式的数据后无法执行success的解决方法
- 关于PHP CURL post数据时数据过大导致无法接收返回信息的处理方法
- FireFox中使用JQuery的ajaxfileupload插件返回JSON格式数据提示保存的解决方法。
- Dedecms自定义表单“数据校验不对,程序返回错误”的解决方法
- $.ajax返回的JSON格式的数据后无法执行success的解决方法
- MyEclipse生成的Spring+Hibernate无法保存数据问题的解决方法
- 由于mysql运行权限导致无法找到 Discuz! 论坛数据表! 的解决方法
- PHP开发中session无法获取和保存问题解决方法!
- php history.back返回后表单数据丢失的解决办法
- $.ajax返回的JSON格式的数据后无法执行success的解决方法
- phpcms调用getJSON无法返回json数据的解决方法
- php history.back返回后表单数据丢失的解决办法
- PhpStorm的POST方法无法接收表单数据的解决方法
- android Webview中注入js,用于解决第三方页中出现返回事件window.history.go(-1),无法响应问题