表单提交错误后返回内容消失问题的解决方法(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生成EXCEL的东东
Oct 09 PHP
PHP下通过系统信号量加锁方式获取递增序列ID
Sep 25 PHP
PHP警告Cannot use a scalar value as an array的解决方法
Jan 11 PHP
PHP优于Node.js的五大理由分享
Sep 15 PHP
php 字符串中的\n换行符无效、不能换行的解决方法
Apr 02 PHP
在Nginx上部署ThinkPHP项目教程
Feb 02 PHP
Zend Framework教程之Zend_Controller_Plugin插件用法详解
Mar 07 PHP
PHP查询附近的人及其距离的实现方法
May 11 PHP
深入剖析PHP中printf()函数格式化使用
May 23 PHP
Swoole实现异步投递task任务案例详解
Apr 02 PHP
搭建PhpStorm+PhpStudy开发环境的超详细教程
Sep 17 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
Mar 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
深入php数据采集的详解
2013/06/02 PHP
Yii框架弹出窗口组件CJuiDialog用法分析
2017/01/07 PHP
硬盘浏览程序,保存成网页格式便可使用
2006/12/03 Javascript
setTimeout的延时为0时多个浏览器的区别
2012/05/23 Javascript
js实现右下角提示框的方法
2015/02/03 Javascript
Javascript中arguments用法实例分析
2015/06/13 Javascript
JavaScript动态插入CSS的方法
2015/12/10 Javascript
AngularJS中实现用户访问的身份认证和表单验证功能
2016/04/21 Javascript
jQuery对象的链式操作用法分析
2016/05/10 Javascript
jQuery.ajax实现根据不同的Content-Type做出不同的响应
2016/11/03 Javascript
微信小程序-拍照或选择图片并上传文件
2017/01/06 Javascript
微信小程序 开发经验整理
2017/02/15 Javascript
jquery submit()不能提交表单的解决方法
2017/04/24 jQuery
详解express与koa中间件模式对比
2017/08/07 Javascript
JavaScript实现旋转轮播图
2020/08/18 Javascript
深入浅析JSONAPI在PHP中的应用
2017/12/24 Javascript
Nodejs实现用户注册功能
2019/04/14 NodeJs
微信小程序合法域名配置方法
2019/05/06 Javascript
VueX模块的具体使用(小白教程)
2020/06/05 Javascript
[07:09]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant 选手采访
2021/03/11 DOTA
Django 开发环境与生产环境的区分详解
2019/07/26 Python
python实现的多任务版udp聊天器功能案例
2019/11/13 Python
使用PyCharm安装pytest及requests的问题
2020/07/31 Python
python 实现汉诺塔游戏
2020/11/28 Python
目前不被任何主流浏览器支持的CSS3属性汇总
2014/07/21 HTML / CSS
html5图片上传预览示例分享
2014/04/14 HTML / CSS
联想智利官方网站:Lenovo Chile
2020/06/03 全球购物
澳大利亚头发和美容产品购物网站:OZ Hair & Beauty
2020/03/27 全球购物
广州足迹信息技术有限公司Java软件工程师试题
2014/02/15 面试题
初中生物教学反思
2014/01/10 职场文书
员工趣味活动方案
2014/08/27 职场文书
2014领导班子四风剖析对照检查材料思想汇报
2014/09/20 职场文书
会议欢迎词范文
2015/01/27 职场文书
2016教师节感恩话语
2015/12/09 职场文书
python如何读取.mtx文件
2021/04/22 Python
FP-growth算法发现频繁项集——发现频繁项集
2021/06/24 Python