表单提交错误后返回内容消失问题的解决方法(PHP网站)

 更新时间:2015年10月20日 17:16:27   投稿:lijiao  
这篇文章主要介绍了表单提交错误后返回内容消失问题的解决方法,需要的朋友可以参考下

表单提交错误后返回内容消失怎么办呐,今天就来分析解决一下这个问题。

状况概述:

做填写表单信息提交的时候会碰到一个问题就是当用户填写并提交表单后,程序判断不符合要求并返回,返回之后之前填写的表单信息会被清空了的情况。如果填写的信息量少还无所谓,如果填写的信息量比较多,这会直接打击到填写信息的人的良好心情。因此解决表单提交错误返回后填写的内容消失的问题是一个提高用户体验度的迫在眉睫的问题。
对于这种问题,综合总结了大概有下面几种情况:
(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编程中10个最常见的错误

    浅析PHP编程中10个最常见的错误

    PHP是个伟大的web开发语言,灵活的语言,但是看到php程序员周而复始的犯的一些错误。我做了下面这个列表,列出了PHP程序员经常犯的10中错误,大多数和安全相关。看看你犯了几种
    2014-08-08
  • 详解Laravel制作API接口

    详解Laravel制作API接口

    API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。本文将详细介绍Laravel制作API接口。
    2021-05-05
  • PHP中overload与override的区别

    PHP中overload与override的区别

    本文主要介绍了PHP中overload与override的区别。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • php自定义错误处理用法实例

    php自定义错误处理用法实例

    这篇文章主要介绍了php自定义错误处理用法,实例分析了php通过自定义函数进行错误处理的技巧,需要的朋友可以参考下
    2015-03-03
  • PHP遍历文件夹与文件类及处理类用法实例

    PHP遍历文件夹与文件类及处理类用法实例

    这篇文章主要介绍了PHP遍历文件夹与文件类及处理类用法实例,包括了文件及文件夹的遍历以及清除utf8的bom头方法,非常实用,需要的朋友可以参考下
    2014-09-09
  • 用phpmyadmin更改mysql5.0登录密码

    用phpmyadmin更改mysql5.0登录密码

    mysql5.0更改登录密码完成架站完成大斌的BLOG也一并处理今天忙了整整一天,做了一些无聊并且重复的体力劳动,几乎没有学到什么东西,却浪费了一天时间。可惜,可悲,可叹。不过总算把算服务器的MYSQL登录密码和PHPMYADMIN的远程访问方式改好了。MYSQL自4.1起就更改了加密方式,讲原先16位的加密改成40位,把我害苦了,怎么都连接不上。查遍资料今天总算搞定了通过PHPMYADMIN更改MYSQL密码,个人觉得简单实用
    2008-03-03
  • PHP实现的mysql操作类【MySQL与MySQLi方式】

    PHP实现的mysql操作类【MySQL与MySQLi方式】

    这篇文章主要介绍了PHP实现的mysql操作类,结合实例形式分析了MySQL与MySQLi方式连接与操作MySQL数据库的常用方法封装与使用技巧,需要的朋友可以参考下
    2017-10-10
  • php中cookie的作用域

    php中cookie的作用域

    注意cookie的作用域:
    2008-03-03
  • 一致性哈希算法以及其PHP实现详细解析

    一致性哈希算法以及其PHP实现详细解析

    以下是对用PHP实现一致性哈希算法进行了详细的介绍,需要的朋友可以过来参考下
    2013-08-08
  • round robin权重轮循算法php实现代码

    round robin权重轮循算法php实现代码

    这篇文章主要介绍了round robin权重轮循算法php实现代码,需要的朋友可以参考下
    2016-05-05

最新评论