PHP提交表单失败后如何保留已经填写的信息


Posted in PHP onJune 20, 2014

本文介绍PHP提交表单失败后如何保留填写的信息一些方法总结,其中最常用的就是使用缓存方式了,这种方法如果网速慢是可能出问题的,最好的办法就是使用ajax了。

1.使用header头设置缓存控制头Cache-control。

PHP代码如下:

header('Cache-control: private, must-revalidate'); //支持页面回跳

2.使用session_cache_limiter方法。

PHP代码如下:

session_cache_limiter('private, must-revalidate'); //要写在session_start方法之前

下面介绍一下session_cache_limiter参数:

session_cache_limiter内的几个参数意义是:
nocache:当然是不缓存(比如:表单信息被清除),但公共变量可以缓存
private:私有方式缓存(比如:表单信息被保留,但在生存期内有效)
private_no_cache:私有方式但不过期(表单信息被保留)
publice:公有方式,(表单信息也被保留)
设置缓存过期时间:session_cache_expire函数设置,缺省是180分钟。

常遇见问题:

1.session_cache_limiter("private");表单信息是保留了,但是如果我修改已经提交的信息,表单页面所呈现的信息还是缓存里信息,没能及时自动刷新,如果不用session_cache_limiter("private");又不能保留表单信息
解决方案:

在session_start前面加上

session_cache_limiter( "private, must-revalidate" );

即可。

2.另一种办法我们可以使用ajax来实例

index.html模板文件大致内容如下:

<html>
<head>
<title>jQuery Ajax 实例演示</title>
</head>
<script src="./js/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){//这个就是jQueryready ,它就像C语言的main 所有操作包含在它里面
 $("#button_login").mousedown(function(){
 login(); //点击ID为"button_login"的按钮后触发函数 login();
 });
 function login(){ //函数 login();
  var username = $("#username").val();//取框中的用户名
  var password = $("#password").val();//取框中的密码
  $.ajax({ //一个Ajax过程
   type: "post", //以post方式与后台沟通
   url : "login.php", //与此php页面沟通
   dataType:'json',//从php返回的值以 JSON方式 解释
   data: 'username='+username+'&password='+password, //发给php的数据有两项,分别是上面传来的u和p
   success: function(json){//如果调用php成功
   //alert(json.username+'n'+json.password); //把php中的返回值(json.username)给 alert出来
   $('#result').html("姓名:" + json.username + "<br/>密码:" + json.password); //把php中的返回值显示在预定义的result定位符位置
   }
  });
 }
 //$.post()方式:
 $('#test_post').mousedown(function (){
  $.post(
   'login.php',
   {
   username:$('#username').val(),
   password:$('#password').val()
   },
   function (data) //回传函数
   {
    var myjson='';
    eval_r('myjson=' + data + ';');
    $('#result').html("姓名1:" + myjson.username + "<br/>密码1:" + myjson.password);
   }
  );
 });
 //$.get()方式:
 $('#test_get').mousedown(function (){
  $.get(
   'login.php',
   {
   username:$('#username').val(),
   password:$('#password').val()
   },
   function(data) //回传函数
   {
    var myjson='';
    eval_r("myjson=" + data + ";");
    $('#result').html("姓名2:" + myjson.username + "<br/>密码2:" + myjson.password);
   }
  );
 });
});
</script>
<body>
<div id="result" style="background:orange;border:1px solid red;width:300px;height:200px;"></div>
<form id="formtest" action="" method="post">
<p><span>输入姓名:</span><input type="text" name="username" id="username" /></p>
<p><span>输入密码:</span><input type="text" name="password" id="password" /></p>
</form>
<button id="button_login">ajax提交</button>
<button id="test_post">post提交</button>
<button id="test_get">get提交</button>
</body>
</html>

login.php文件的内容如下:

<?php
echo json_encode(array ('username'=>$_REQUEST['username'],'password'=>$_REQUEST['password']));
?>

这样的话我们提交不需要刷新页面了,如果失败就直接会有提交了,这样可以100%保存提交失败后数据不被丢失了。

PHP 相关文章推荐
php str_pad 函数使用详解
Jan 13 PHP
PHP 抓取新浪读书频道的小说并生成txt电子书的代码
Dec 18 PHP
php date()日期时间函数详解
May 16 PHP
深入理解PHP原理之异常机制
Aug 21 PHP
centos 5.6 升级php到5.3的方法
May 14 PHP
php模块memcache和memcached区别分析
Jun 14 PHP
PHP简单选择排序算法实例
Jan 26 PHP
Symfony2学习笔记之插件格式分析
Mar 17 PHP
php将一维数组转换为每3个连续值组成的二维数组
May 06 PHP
PHP标准类(stdclass)用法示例
Sep 28 PHP
PHP二维数组去重算法
Dec 17 PHP
phpstorm激活码2020附使用详细教程
Sep 25 PHP
将酷狗krc歌词解析并转换为lrc歌词php源码
Jun 20 #PHP
Yii Framework框架获取分类下面的所有子类方法
Jun 20 #PHP
windows下配置apache+php+mysql时出现问题的处理方法
Jun 20 #PHP
PHP扩展CURL的用法详解
Jun 20 #PHP
教你如何解密 “ PHP 神盾解密工具 ”
Jun 20 #PHP
ThinkPHP3.1查询语言详解
Jun 19 #PHP
ThinkPHP3.1数据CURD操作快速入门
Jun 19 #PHP
You might like
一个程序下载的管理程序(二)
2006/10/09 PHP
yii上传文件或图片实例
2014/04/01 PHP
php中使用sftp教程
2015/03/30 PHP
PHP上传文件参考配置大文件上传
2015/12/16 PHP
PHP生成word文档的三种实现方式
2016/11/14 PHP
PHP单例模式实例分析【防继承,防克隆操作】
2019/05/22 PHP
Nigma vs Liquid BO3 第二场2.13
2021/03/10 DOTA
脚本吧 - 幻宇工作室用到js,超强推荐expand.js
2006/12/23 Javascript
理解JSON:3分钟课程
2011/10/28 Javascript
Javascript实现视频轮播在pc端与移动端均可
2013/09/29 Javascript
js 鼠标移动显示图片的简单实例
2013/12/25 Javascript
使用jquery+CSS实现控制打印样式
2014/12/31 Javascript
jQuery+PHP+MySQL二级联动下拉菜单实例讲解
2015/10/27 Javascript
AngularJS表单基本操作
2017/01/09 Javascript
js禁止浏览器的回退事件
2017/04/20 Javascript
vue2.0 中#$emit,$on的使用详解
2017/06/07 Javascript
vue.js 图片上传并预览及图片更换功能的实现代码
2018/08/27 Javascript
javascript使用Blob对象实现的下载文件操作示例
2020/04/18 Javascript
python如何拆分含有多种分隔符的字符串
2018/03/20 Python
python修改list中所有元素类型的三种方法
2018/04/09 Python
Python基于最小二乘法实现曲线拟合示例
2018/06/14 Python
Python3数字求和的实例
2019/02/19 Python
Python对HTML转义字符进行反转义的实现方法
2019/04/28 Python
使用Django开发简单接口实现文章增删改查
2019/05/09 Python
Django框架中间件定义与使用方法案例分析
2019/11/28 Python
django 前端页面如何实现显示前N条数据
2020/03/16 Python
Python延迟绑定问题原理及解决方案
2020/08/04 Python
基于css3仿造window7的开始菜单
2010/06/17 HTML / CSS
Helly Hansen工作服美国官方网上商店:为最恶劣的环境
2019/09/04 全球购物
Python是如何进行类型转换的
2013/06/09 面试题
创业计划书——互联网商机
2014/01/12 职场文书
新学期家长寄语
2014/01/19 职场文书
校园广播稿500字
2014/02/04 职场文书
亲戚结婚的请假条
2014/02/11 职场文书
校园歌咏比赛主持词
2014/03/18 职场文书
公司承诺书格式
2014/05/21 职场文书