表单提交错误后返回内容消失问题的解决方法(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运算符
Oct 09 PHP
php分页示例代码
Mar 19 PHP
Discuz板块横排显示图片的实现方法
May 28 PHP
php addslashes及其他清除空格的方法是不安全的
Jan 25 PHP
ajax取消挂起请求的处理方法
Mar 18 PHP
PHP中round()函数对浮点数进行四舍五入的方法
Nov 19 PHP
php随机生成数字字母组合的方法
Mar 18 PHP
浅谈mysql_query()函数的返回值问题
Sep 05 PHP
php使用curl代理实现抓取数据的方法
Feb 03 PHP
PHP基于递归实现的约瑟夫环算法示例
Aug 27 PHP
PHP实现函数内修改外部变量值的方法示例
Dec 28 PHP
php精度计算的问题解析
Jun 21 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的可变变量名需要的注意的问题
2013/06/20 PHP
PHP中几个可以提高运行效率的代码写法、技巧分享
2014/08/21 PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
2017/11/20 PHP
php使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
使用TextRange获取输入框中光标的位
2006/10/14 Javascript
高效的表格行背景隔行变色及选定高亮的JS代码
2010/12/04 Javascript
使用jQuery避免鼠标双击的解决方案
2013/08/21 Javascript
Jquery 在页面加载后执行的几种方式
2014/03/14 Javascript
JavaScript中实现Map的示例代码
2015/09/09 Javascript
vue.js学习笔记之绑定style样式和class列表
2016/10/31 Javascript
ionic2 tabs使用 Modal底部tab弹出框
2016/12/30 Javascript
vue-router 学习快速入门
2017/03/01 Javascript
webpack构建的详细流程探底
2018/01/08 Javascript
angularjs 获取默认选中的单选按钮的value方法
2018/02/28 Javascript
详解SPA中前端路由基本原理与实现方式
2018/09/12 Javascript
Vue中实现回车键切换焦点的方法
2020/02/19 Javascript
vue 实现动态路由的方法
2020/07/06 Javascript
vue 基于abstract 路由模式 实现页面内嵌的示例代码
2020/12/14 Vue.js
Vue多选列表组件深入详解
2021/03/02 Vue.js
python基础教程之数字处理(math)模块详解
2014/03/25 Python
Python中dictionary items()系列函数的用法实例
2014/08/21 Python
python实现获取Ip归属地等信息
2016/08/27 Python
在Linux命令行终端中使用python的简单方法(推荐)
2017/01/23 Python
Python3实现的画图及加载图片动画效果示例
2018/01/19 Python
Python实现动态添加属性和方法操作示例
2018/07/25 Python
利用python实现.dcm格式图像转为.jpg格式
2020/01/13 Python
浅谈在django中使用redirect重定向数据传输的问题
2020/03/13 Python
如何在Python 游戏中模拟引力
2020/03/27 Python
keras读取h5文件load_weights、load代码操作
2020/06/12 Python
Volcom法国官网:美国冲浪滑板品牌
2017/05/25 全球购物
维也纳通行证:Vienna PASS
2019/07/18 全球购物
旅游管理专业个人求职信范文
2013/12/24 职场文书
班委竞选演讲稿
2014/04/28 职场文书
民主评议党员总结
2014/10/20 职场文书
2015出纳试用期工作总结
2014/12/12 职场文书
导游词之塘栖古镇
2019/12/04 职场文书