表单提交错误后返回内容消失问题的解决方法(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读取文件并可支持远程文件的代码分享
Oct 03 PHP
Session服务器配置指南与使用经验的深入解析
Jun 17 PHP
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
Jun 19 PHP
php在数组中查找指定值的方法
Mar 17 PHP
windows下apache搭建php开发环境
Aug 27 PHP
是 WordPress 让 PHP 更流行了 而不是框架
Feb 03 PHP
PHP请求Socket接口测试实例
Aug 12 PHP
PHP实现判断数组是一维、二维或几维的方法
Feb 06 PHP
Laravel中批量赋值Mass-Assignment的真正含义详解
Sep 29 PHP
PHP回调函数概念与用法实例分析
Nov 03 PHP
php使用redis的几种常见操作方式和用法示例
Feb 20 PHP
详细分析PHP7与PHP5区别
Jun 26 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用户注册页面利用js进行表单验证具体实例
2013/10/17 PHP
浅析php中json_encode()和json_decode()
2014/05/25 PHP
PHP多文件上传实例
2015/07/09 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
基于ThinkPHP删除目录及目录文件函数
2020/10/28 PHP
js更优雅的兼容
2010/08/12 Javascript
jQuery中fadeIn、fadeOut、fadeTo的使用方法(图片显示与隐藏)
2013/05/08 Javascript
Javascript中匿名函数的多种调用方式总结
2013/12/06 Javascript
js在IE与firefox的差异集锦
2014/11/11 Javascript
JavaScript中window.showModalDialog()用法详解
2014/12/18 Javascript
javascript学习笔记整理(概述、变量、数据类型简介)
2015/10/25 Javascript
Angular Module声明和获取重载实例代码
2016/09/14 Javascript
Vue常用指令V-model用法
2017/03/08 Javascript
JavaScript中双符号的运算详解
2017/03/12 Javascript
原生JS实现图片网格式渐显、渐隐效果
2017/06/05 Javascript
详解.vue文件中监听input输入事件(oninput)
2017/09/19 Javascript
React 组件转 Vue 组件的命令写法
2018/02/28 Javascript
在Vant的基础上实现添加表单验证框架的方法示例
2018/12/05 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
2021/02/26 Vue.js
[06:23]2014DOTA2西雅图国际邀请赛 小组赛7月12日TOPPLAY
2014/07/12 DOTA
Python实现加载及解析properties配置文件的方法
2018/03/29 Python
对python3 一组数值的归一化处理方法详解
2018/07/11 Python
python 整数越界问题详解
2019/06/27 Python
Jacobi迭代算法的Python实现详解
2019/06/29 Python
Django的性能优化实现解析
2019/07/30 Python
python Pillow图像处理方法汇总
2019/10/16 Python
numpy创建单位矩阵和对角矩阵的实例
2019/11/29 Python
python-sys.stdout作为默认函数参数的实现
2020/02/21 Python
NFL Game Pass欧洲:在线观看NFL比赛直播和点播,以高清质量播放
2018/08/30 全球购物
C#公司笔试题
2014/03/28 面试题
主要的Ajax框架都有什么
2013/11/14 面试题
技校毕业生自荐信
2014/06/03 职场文书
法律专业自荐信
2014/06/03 职场文书
华山导游词
2015/02/03 职场文书
初中班长竞选稿
2015/11/20 职场文书
MySql 缓存查询原理与缓存监控和索引监控介绍
2021/07/02 MySQL