表单提交错误后返回内容消失问题的解决方法(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 相关文章推荐
linux php mysql数据库备份实现代码
Mar 10 PHP
PHP中return 和 exit 、break和contiue 区别与用法
Apr 09 PHP
基于PHP编程注意事项的小结
Apr 27 PHP
浅析PHP 按位与或 (^ 、&)
Jun 21 PHP
php使用反射插入对象示例分享
Mar 11 PHP
php实例分享之mysql数据备份
May 19 PHP
ThinkPHP控制器里javascript代码不能执行的解决方法
Nov 22 PHP
ioncube_loader_win_5.2.dll的错误解决方法
Jan 04 PHP
PHP使用反射机制实现查找类和方法的所在位置
Apr 22 PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
Nov 18 PHP
CI框架表单验证实例详解
Nov 21 PHP
Laravel框架实现的rbac权限管理操作示例
Jan 16 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面向对象public private protected 访问修饰符
2013/06/30 PHP
php获取YouTube视频信息的方法
2015/02/11 PHP
基于php实现随机合并数组并排序(原排序)
2015/11/26 PHP
IE中radio 或checkbox的checked属性初始状态下不能选中显示问题
2009/07/25 Javascript
Javascript+XMLHttpRequest+asp.net无刷新读取数据库数据
2009/08/09 Javascript
JQuery插件iScroll实现下拉刷新,滚动翻页特效
2014/06/22 Javascript
jQuery中index()方法用法实例
2014/12/27 Javascript
使用jquery提交form表单并自定义action的方法
2016/05/25 Javascript
jQuery获取attr()与prop()属性值的方法及区别介绍
2016/07/06 Javascript
Bootstrap入门教程一Hello Bootstrap初识
2017/03/02 Javascript
详解vue axios中文文档
2017/09/12 Javascript
JavaScript多态与封装实例分析
2018/07/27 Javascript
详解Webpack loader 之 file-loader
2018/11/07 Javascript
vue解决使用$http获取数据时报错的问题
2019/10/30 Javascript
vue 实现LED数字时钟效果(开箱即用)
2019/12/08 Javascript
微信小程序开发(一):服务器获取数据列表渲染操作示例
2020/06/01 Javascript
Python实现对象转换为xml的方法示例
2017/06/08 Python
Tensorflow之Saver的用法详解
2018/04/23 Python
python如何创建TCP服务端和客户端
2018/08/26 Python
python os.path模块常用方法实例详解
2018/09/16 Python
django 实现简单的插入视频
2020/04/07 Python
Pytorch环境搭建与基本语法
2020/06/03 Python
Python爬虫实现HTTP网络请求多种实现方式
2020/06/19 Python
Django Session和Cookie分别实现记住用户登录状态操作
2020/07/02 Python
基于selenium及python实现下拉选项定位select
2020/07/22 Python
主要的Ajax框架都有什么
2013/11/14 面试题
政法学院毕业生求职信
2014/02/28 职场文书
幼儿教师师德师风演讲稿
2014/08/22 职场文书
2014领导班子四风问题对照检查材料思想汇报
2014/09/21 职场文书
领导干部失职检讨书
2015/05/05 职场文书
初中重阳节活动总结
2015/05/05 职场文书
安全生产隐患排查制度
2015/08/05 职场文书
解决Pytorch dataloader时报错每个tensor维度不一样的问题
2021/05/28 Python
利用Python读取微信朋友圈的多种方法总结
2021/08/23 Python
css常用字体属性与背景属性介绍
2022/02/28 HTML / CSS
在python中读取和写入CSV文件详情
2022/06/28 Python