表单提交错误后返回内容消失问题的解决方法(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 相关文章推荐
第三节--定义一个类
Nov 16 PHP
apache+php+mysql安装配置方法小结
Aug 01 PHP
深入掌握include_once与require_once的区别
Jun 17 PHP
php插入排序法实现数组排序实例
Feb 16 PHP
基于php实现七牛抓取远程图片
Dec 01 PHP
详解thinkphp5+swoole实现异步邮件群发(SMTP方式)
Oct 13 PHP
Laravel中的chunk组块结果集处理与注意问题
Aug 15 PHP
CentOS7.0下安装PHP5.6.30服务的教程详解
Sep 29 PHP
Laravel框架定时任务2种实现方式示例
Dec 08 PHP
php创建多级目录与级联删除文件的方法示例
Sep 12 PHP
Laravel 模型关联基础教程详解
Sep 17 PHP
Laravel自定义 封装便捷返回Json数据格式的引用方法
Sep 29 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
php radio 单选框获取与保持值的实现代码
2010/05/15 PHP
php 面向对象的一个例子
2011/04/12 PHP
解析php多线程下载远程多个文件
2013/06/25 PHP
thinkphp多表查询两表有重复相同字段的完美解决方法
2016/09/22 PHP
Yii 2.0在Grid中格式化时间方法示例
2017/06/06 PHP
PHP简单验证码功能机制实例详解
2019/03/27 PHP
Yii2框架自定义类统一处理url操作示例
2019/05/25 PHP
一个无限级XML绑定跨框架菜单(For IE)
2007/01/27 Javascript
解析瀑布流布局:JS+绝对定位的实现
2013/05/08 Javascript
使用闭包对setTimeout进行简单封装避免出错
2013/07/10 Javascript
鼠标滑在标题上显示图片的JS代码
2013/11/19 Javascript
js如何准确获取当前页面url网址信息
2020/09/13 Javascript
JavaScript微信定位功能实现方法
2016/11/29 Javascript
Angularjs 动态添加指令并绑定事件的方法
2017/04/13 Javascript
Javascript实现信息滚动效果
2017/05/18 Javascript
Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件
2017/09/18 Javascript
Python检测字符串中是否包含某字符集合中的字符
2015/05/21 Python
实例解析Python中的__new__特殊方法
2016/06/02 Python
在Django中输出matplotlib生成的图片方法
2018/05/24 Python
和孩子一起学习python之变量命名规则
2018/05/27 Python
python实现门限回归方式
2020/02/29 Python
python实现简易版学生成绩管理系统
2020/06/22 Python
Python3爬虫中pyspider的安装步骤
2020/07/29 Python
Python3爬虫里关于识别微博宫格验证码的知识点详解
2020/07/30 Python
CSS3 3D旋转rotate效果实例介绍
2016/05/03 HTML / CSS
HTML5仿微信聊天界面、微信朋友圈实例代码
2018/01/29 HTML / CSS
Lacoste(法国鳄鱼)加拿大官网:以标志性的POLO衫而闻名
2019/05/15 全球购物
全球才华横溢工匠的家居装饰、珠宝和礼物:NOVICA
2021/01/22 全球购物
后勤部长岗位职责
2013/12/14 职场文书
办加油卡单位介绍信
2014/01/09 职场文书
企业军训感言
2014/02/08 职场文书
《玩具柜台前的孩子》教学反思
2014/02/13 职场文书
个人充满哲理的自我评价
2014/02/20 职场文书
临时工聘用合同协议书
2014/10/29 职场文书
python 实现图与图之间的间距调整subplots_adjust
2021/05/21 Python
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
2021/11/01 MongoDB