表单提交错误后返回内容消失问题的解决方法(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 相关文章推荐
做一个有下拉功能的留言版
Oct 09 PHP
[转帖]PHP世纪万年历
Dec 06 PHP
phpadmin如何导入导出大数据文件及php.ini参数修改
Feb 18 PHP
PHP程序漏洞产生的原因分析与防范方法说明
Mar 06 PHP
PHP微信开发之查询微信精选文章
Jun 23 PHP
ThinkPHP发送邮件示例代码
Oct 08 PHP
PHP内存缓存功能memcached示例
Oct 19 PHP
php删除二维数组中的重复值方法
Mar 12 PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
May 21 PHP
laravel 自定义常量的两种方案
Oct 14 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
Nov 21 PHP
基于php+MySql实现学生信息管理系统实例
Aug 04 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
Could not load type System.ServiceModel.Activation.HttpModule解决办法
2012/12/29 PHP
php 在windows下配置虚拟目录的方法介绍
2013/06/26 PHP
PHP采用自定义函数实现遍历目录下所有文件的方法
2014/08/19 PHP
跟我学Laravel之路由
2014/10/15 PHP
PHP实现一个限制实例化次数的类示例
2019/09/16 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
javascript简单事件处理和with用法介绍
2013/09/16 Javascript
node.js中的console.log方法使用说明
2014/12/09 Javascript
jquery实现漫天雪花飞舞的圣诞祝福雪花效果代码分享
2015/08/20 Javascript
CSS javascript 结合实现悬浮固定菜单效果
2015/08/23 Javascript
js实现具有高亮显示效果的多级菜单代码
2015/09/01 Javascript
使用JavaScript和CSS实现文本隔行换色的方法
2015/11/04 Javascript
js实现兼容IE、Firefox的图片缩放代码
2015/12/08 Javascript
后端接收不到AngularJs中$http.post发送的数据原因分析及解决办法
2016/07/05 Javascript
详解js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)
2017/01/09 Javascript
vue.js学习之UI组件开发教程
2017/07/03 Javascript
vue2+el-menu实现路由跳转及当前项的设置方法实例
2017/11/07 Javascript
在Vant的基础上实现添加表单验证框架的方法示例
2018/12/05 Javascript
Pyhton中防止SQL注入的方法
2015/02/05 Python
python在每个字符后添加空格的实例
2018/05/07 Python
使用python存储网页上的图片实例
2018/05/22 Python
浅谈django orm 优化
2018/08/18 Python
python使用MQTT给硬件传输图片的实现方法
2019/05/05 Python
Django中使用 Closure Table 储存无限分级数据
2019/06/06 Python
Django框架之登录后自定义跳转页面的实现方法
2019/07/18 Python
keras 回调函数Callbacks 断点ModelCheckpoint教程
2020/06/18 Python
django中ImageField的使用详解
2020/12/21 Python
大学生活学习的自我评价
2013/12/03 职场文书
坚定理想信念心得体会
2014/03/11 职场文书
学校门卫岗位职责
2014/03/16 职场文书
政府四风问题整改措施
2014/10/04 职场文书
土地租赁协议书
2015/01/29 职场文书
教师节随笔
2015/08/15 职场文书
五年级语文教学反思
2016/03/03 职场文书
Spring Data JPA的Audit功能审计数据库的变更
2021/06/26 Java/Android
MySQL对数据表已有表进行分区表的实现
2021/11/01 MySQL