表单提交错误后返回内容消失问题的解决方法(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 中的面向对象编程:通向大型 PHP 工程的办法
Dec 03 PHP
PHP $_FILES函数详解
Mar 09 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
Aug 06 PHP
php实现微信公众平台账号自定义菜单类
Oct 11 PHP
详解PHP实现异步调用的4种方法
Mar 14 PHP
apache php mysql开发环境安装教程
Jul 28 PHP
PHP读取大文件的几种方法介绍
Oct 27 PHP
浅谈socket同步和异步、阻塞和非阻塞、I/O模型
Dec 15 PHP
LAMP环境使用Composer安装Laravel的方法
Mar 25 PHP
详解PHP swoole process的使用方法
Aug 26 PHP
ThinkPHP 3使用OSS的方法
Jul 19 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
Mar 09 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学习之PHP运算符
2006/10/09 PHP
php实现俄罗斯乘法实例
2015/03/07 PHP
PHP经典面试题集锦
2015/03/19 PHP
CodeIgniter配置之autoload.php自动加载用法分析
2016/01/20 PHP
在Laravel中实现使用AJAX动态刷新部分页面
2019/10/15 PHP
jQuery 处理表单元素的代码
2010/02/15 Javascript
jquery对dom节点的操作【推荐】
2016/04/15 Javascript
基于JQuery实现图片上传预览与删除操作
2016/05/24 Javascript
JS取模、取商及取整运算方法示例
2016/10/13 Javascript
node.js中express中间件body-parser的介绍与用法详解
2017/05/23 Javascript
JavaScript基础之流程控制语句的用法
2017/08/31 Javascript
js原生实现移动端手指滑动轮播图效果的示例
2018/01/02 Javascript
浅谈angular4.0中路由传递参数、获取参数最nice的写法
2018/03/12 Javascript
vue.js内置组件之keep-alive组件使用
2018/07/10 Javascript
webstorm中配置Eslint的两种方式及差异比较详解
2018/10/19 Javascript
解决LayUI数据表格复选框不居中显示的问题
2019/09/25 Javascript
vue框架制作购物车小球动画效果实例代码
2019/09/26 Javascript
JS字符串补全方法padStart()和padEnd()
2020/05/27 Javascript
Python发送form-data请求及拼接form-data内容的方法
2016/03/05 Python
利用python发送和接收邮件
2016/09/27 Python
python使用arcpy.mapping模块批量出图
2017/03/06 Python
Python基础学习之常见的内建函数整理
2017/09/06 Python
浅谈python标准库--functools.partial
2019/03/13 Python
详解python中list的使用
2019/03/15 Python
python调用matplotlib模块绘制柱状图
2019/10/18 Python
Python 项目转化为so文件实例
2019/12/23 Python
python利用xlsxwriter模块 操作 Excel
2020/10/14 Python
Python包资源下载路径报404解决方案
2020/11/05 Python
Python 虚拟环境工作原理解析
2020/12/24 Python
耐克波兰官方网站:Nike波兰
2019/09/03 全球购物
毕业生找工作的自我评价
2013/10/18 职场文书
岗位职责说明书模板
2014/07/30 职场文书
党的群众路线对照检查材料思想汇报
2014/09/25 职场文书
党员剖析材料范文
2014/09/30 职场文书
上学路上观后感
2015/06/16 职场文书
python基础之爬虫入门
2021/05/10 Python