表单提交错误后返回内容消失问题的解决方法(PHP网站)


Posted in PHP onOctober 20, 2015

表单提交错误后返回内容消失怎么办呐,今天就来分析解决一下这个问题。

状况概述:

做填写表单信息提交的时候会碰到一个问题就是当用户填写并提交表单后,程序判断不符合要求并返回,返回之后之前填写的表单信息会被清空了的情况。如果填写的信息量少还无所谓,如果填写的信息量比较多,这会直接打击到填写信息的人的良好心情。因此解决表单提交错误返回后填写的内容消失的问题是一个提高用户体验度的迫在眉睫的问题。
对于这种问题,综合总结了大概有下面几种情况:
(1)页面使用了session_start函数,这个函数有个特点就是会强制当前页面不被刷新,解决方法就是在此函数后加上下面这段代码:

header("Cache-control:private");//注意在本行之前你的PHP程序不能有任何输出

还有其他的几种解决方法是在session_start前加上

session_cache_limiter('nocache'); //清空表单 
session_cache_limiter('private'); //不清空表单,只在session生效期间 
session_cache_limiter('public'); //不清空表单,如同没使用session一般

上面的设置session会使seesion出现缓存的现象,从而导致当你应用到session的地方会出现session信息不能更新的问题,鉴于这个原因,本文提出下面几种其他的解决办法。
 (2)使用Header方法设置消息头Cache-control,在页面加入下段代码:
header('Cache-control: private, must-revalidate');  //支持页面回跳,注意本行之前不能有任何输出
(3)使用session_cache_limiter方法,在页面加入下段代码:
session_cache_limiter('private, must-revalidate'); //注意要写在session_start方法之前
下面对Cache-Control消息头域做一下补充说明:
Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if- cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must- revalidate、proxy-revalidate、max-age。各个消息中的指令含义如下:

Public:指示响应可被任何缓存区缓存。

Private:指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。

no-cache:指示请求或响应消息不能缓存 

no-store:用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。 

max-age:指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。

min-fresh:指示客户机可以接收响应时间小于当前时间加上指定时间的响应。

max-stale:指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。

读完这篇文章大家再遇到类似问题就可以彻底解决了,特别提醒的是这个解决方法仅针对php网站,可记住了。

PHP 相关文章推荐
在PHP中使用与Perl兼容的正则表达式
Nov 26 PHP
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
Apr 24 PHP
php 连接mssql数据库 初学php笔记
Mar 01 PHP
php摘要生成函数(无乱码)
Feb 04 PHP
PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
Apr 09 PHP
探讨php中遍历二维数组的几种方法详解
Jun 08 PHP
PHP实现统计在线人数功能示例
Oct 15 PHP
Discuz论坛密码与密保加密规则
Dec 19 PHP
详解yii2使用多个数据库的案例
Jun 16 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
Jun 03 PHP
thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例
Oct 10 PHP
解决windows上php xdebug 无法调试的问题
Feb 19 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
Oct 20 #PHP
PHP页面转UTF-8中文编码乱码的解决办法
Oct 20 #PHP
php限制文件下载速度的代码
Oct 20 #PHP
php获取远程文件大小
Oct 20 #PHP
php根据日期或时间戳获取星座信息和生肖等信息
Oct 20 #PHP
php生成验证码函数
Oct 20 #PHP
php文件上传你必须知道的几点
Oct 20 #PHP
You might like
收音机频率指针指示不准确和灵敏度低问题
2021/03/02 无线电
php对gzip文件或者字符串解压实例参考
2008/07/25 PHP
php使用pdo连接mssql server数据库实例
2014/12/25 PHP
PHP 微信支付类 demo
2015/11/30 PHP
PHP实现生成带背景的图形验证码功能
2016/10/03 PHP
jquery中的sortable排序之后的保存状态的解决方法
2010/01/28 Javascript
Js 中debug方式
2010/02/07 Javascript
基于Jquery的将DropDownlist的选中值赋给label的实现代码
2011/05/06 Javascript
Js实现当前点击a标签变色突出显示其他a标签回复原色
2013/11/27 Javascript
JS+CSS实现仿雅虎另类滑动门切换效果
2015/10/13 Javascript
WebPack基础知识详解
2017/01/16 Javascript
jQuery实现的浮动层div浏览器居中显示效果
2017/02/03 Javascript
详解Vue打包优化之code spliting
2018/04/09 Javascript
浅谈webpack-dev-server的配置和使用
2018/05/17 Javascript
Vue+webpack项目配置便于维护的目录结构教程详解
2018/10/14 Javascript
详解js静态检查工具eslint配置文件
2018/11/23 Javascript
angular6开发steps步骤条组件
2019/07/04 Javascript
JS字符串补全方法padStart()和padEnd()
2020/05/27 Javascript
jQuery实现简单评论功能
2020/08/19 jQuery
详解datagrid使用方法(重要)
2020/11/06 Javascript
[01:06:42]VP vs NewBee Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
Python学习笔记之解析json的方法分析
2017/04/21 Python
几种实用的pythonic语法实例代码
2018/02/24 Python
Python中elasticsearch插入和更新数据的实现方法
2018/04/01 Python
pyqt5中QThread在使用时出现重复emit的实例
2019/06/21 Python
什么是Python中的顺序表
2020/06/02 Python
南京迈特望C/C++面试题
2012/07/09 面试题
大学校运会广播稿
2014/02/03 职场文书
安全生产管理合理化建议书
2014/03/12 职场文书
民主评议党员登记表自我评价
2014/10/20 职场文书
计算机专业自荐信范文
2015/03/26 职场文书
教师文明餐桌光盘行动倡议书
2015/04/28 职场文书
法律意见书范文
2015/05/20 职场文书
优秀志愿者感言
2015/08/01 职场文书
Java中CyclicBarrier和CountDownLatch的用法与区别
2021/08/23 Java/Android
基于Python实现射击小游戏的制作
2022/04/06 Python