表单提交错误后返回内容消失问题的解决方法(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 Socket写的POP3类
Oct 30 PHP
php站内搜索关键词变亮的实现方法
Dec 30 PHP
隐性调用php程序的方法
Jun 13 PHP
PHP实现的memcache环形队列类实例
Jul 28 PHP
Session 失效的原因汇总及解决丢失办法
Sep 30 PHP
Symfony2框架学习笔记之HTTP Cache用法详解
Mar 18 PHP
php遍历解析xml字符串的方法
May 05 PHP
php curl常用的5个经典例子
Jan 20 PHP
php str_replace替换指定次数的方法详解
May 05 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
Nov 14 PHP
PHP使用ActiveMQ实例
Feb 05 PHP
tp5(thinkPHP5)框架数据库Db增删改查常见操作总结
Jan 10 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学习笔记之 函数声明
2011/06/09 PHP
php设计模式 DAO(数据访问对象模式)
2011/06/26 PHP
php简单socket服务器客户端代码实例
2015/05/18 PHP
MSN消息提示类
2006/09/05 Javascript
IE8 中使用加速器(Activities)
2010/05/14 Javascript
jquery中dom操作和事件的实例学习 下拉框应用
2011/12/01 Javascript
jquery实现拖拽调整Div大小
2015/01/30 Javascript
javascript结合CSS实现苹果开关按钮特效
2015/04/07 Javascript
再谈JavaScript线程
2015/07/10 Javascript
js游戏人物上下左右跑步效果代码分享
2015/08/28 Javascript
[Bootstrap-插件使用]Jcrop+fileinput组合实现头像上传功能实例代码
2016/12/20 Javascript
setTimeout函数的神奇使用
2017/02/26 Javascript
JS实现直接运行html代码的方法
2017/03/13 Javascript
jquery将标签元素的高设为屏幕的百分比
2017/04/19 jQuery
JavaScript条件判断_动力节点Java学院整理
2017/06/26 Javascript
基于js中this和event 的区别(详解)
2017/10/24 Javascript
webpack4.x打包过程详解
2018/07/18 Javascript
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
2019/06/10 jQuery
浅谈laytpl 模板空值显示null的解决方法及简单的js表达式
2019/09/19 Javascript
python和flask中返回JSON数据的方法
2018/03/26 Python
python3+PyQt5实现自定义分数滑块部件
2018/04/24 Python
Python操作SQLite/MySQL/LMDB数据库的方法
2019/11/07 Python
pytorch 实现将自己的图片数据处理成可以训练的图片类型
2020/01/08 Python
Python基于DB-API操作MySQL数据库过程解析
2020/04/23 Python
如何基于Python爬取隐秘的角落评论
2020/07/02 Python
Python爬虫之Selenium警告框(弹窗)处理
2020/12/04 Python
html5 浏览器支持 如何让所有的浏览器都支持HTML5标签样式
2012/12/07 HTML / CSS
美国内衣第一品牌:Hanes(恒适)
2016/07/29 全球购物
心得体会怎么写
2013/12/30 职场文书
新任教师自我鉴定
2014/02/24 职场文书
大学学习计划书范文
2014/05/02 职场文书
网站推广策划方案
2014/06/04 职场文书
民主评议党员个人自我评价
2015/03/03 职场文书
2015年党员岗位承诺书
2015/04/27 职场文书
毕业论文致谢部分怎么写
2015/05/14 职场文书
Python 装饰器(decorator)常用的创建方式及解析
2022/04/24 Python