表单提交错误后返回内容消失问题的解决方法(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 相关文章推荐
Discuz! Passport 通行证整合
Mar 27 PHP
PHP调用MySQL的存储过程的实现代码
Aug 12 PHP
有关php运算符的知识大全
Nov 03 PHP
PHP合并两个数组的两种方式的异同
Sep 14 PHP
谈谈关于php的优点与缺点
Apr 11 PHP
php class中self,parent,this的区别以及实例介绍
Apr 24 PHP
根据中文裁减字符串函数的php代码
Dec 03 PHP
PHP实现基于文本的摩斯电码生成器
Jan 11 PHP
PHP MSSQL 分页实例
Apr 13 PHP
php之可变函数的实例详解
Sep 13 PHP
解决thinkPHP 5 nginx 部署时,只跳转首页的问题
Oct 16 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
Dec 30 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
laravel Model 执行事务的实现
2019/10/10 PHP
PHP Trait功能与用法实例分析
2020/06/03 PHP
JavaScript 实现类的多种方法实例
2013/05/01 Javascript
Jquery操作下拉框(DropDownList)实现取值赋值
2013/08/13 Javascript
javascript的数组和常用函数详解
2014/05/09 Javascript
Javascript类型转换的规则实例解析
2016/02/23 Javascript
jQuery模拟淘宝购物车功能
2017/02/27 Javascript
Vue.js组件tab实现选项卡切换
2020/03/23 Javascript
vue图片加载与显示默认图片实例代码
2017/03/16 Javascript
详解AngularJS脏检查机制及$timeout的妙用
2017/06/19 Javascript
JavaScript方法_动力节点Java学院整理
2017/06/28 Javascript
使用OPENLAYERS3实现点选的方法
2020/09/24 Javascript
React通过redux-persist持久化数据存储的方法示例
2019/02/14 Javascript
React中this丢失的四种解决方法
2019/03/12 Javascript
浅谈javascript错误处理
2019/08/11 Javascript
vue框架中props的typescript用法详解
2020/02/17 Javascript
详解Python多线程Selenium跨浏览器测试
2017/04/01 Python
Python 稀疏矩阵-sparse 存储和转换
2017/05/27 Python
python中如何正确使用正则表达式的详细模式(Verbose mode expression)
2017/11/08 Python
python pycurl验证basic和digest认证的方法
2018/05/02 Python
解决Tensorflow使用pip安装后没有model目录的问题
2018/06/13 Python
详解pytorch 0.4.0迁移指南
2019/06/16 Python
详解Python并发编程之从性能角度来初探并发编程
2019/08/23 Python
浅谈pytorch torch.backends.cudnn设置作用
2020/02/20 Python
PyQt5实现画布小程序
2020/05/30 Python
浅析Python面向对象编程
2020/07/10 Python
新西兰珠宝品牌:Michael Hill
2017/09/16 全球购物
国际旅客访问北美最大的汽车租赁提供商:Alamo Rent A Car
2018/06/13 全球购物
C#里面如何判断一个Object是否是某种类型(如Boolean)?
2016/02/10 面试题
运动会通讯稿100字
2014/01/31 职场文书
安全生产责任书范本
2014/04/15 职场文书
上海世博会口号
2014/06/19 职场文书
生产操作工岗位职责
2014/09/16 职场文书
2015最新学生自我评价范文
2015/03/03 职场文书
CSS3实现列表无限滚动/轮播效果
2021/06/23 HTML / CSS
Redis 持久化 RDB 与 AOF的执行过程
2021/11/07 Redis