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 图片加水印与上传图片加水印php类
May 12 PHP
PHP程序员面试 切忌急功近利(更需要注重以后的发展)
Sep 01 PHP
作为PHP程序员应该了解MongoDB的五件事
Jun 03 PHP
win7+apache+php+mysql环境配置操作详解
Jun 10 PHP
php 如何获取数组第一个值
Aug 06 PHP
PHP生成随机数的方法实例分析
Jan 22 PHP
ThinkPHP、ZF2、Yaf、Laravel框架路由大比拼
Mar 25 PHP
php简单实现查询数据库返回json数据
Apr 16 PHP
浅析Yii2中GridView常见操作
Apr 22 PHP
PHP微信刮刮卡 附微信接口
Jul 22 PHP
PHP手机短信验证码实现流程详解
May 17 PHP
PHP的mysqli_rollback()函数讲解
Jan 23 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
漂亮但不安全的CTB
2006/10/09 PHP
php 对输入信息的进行安全过滤的函数代码
2012/06/29 PHP
Laravel实现构造函数自动依赖注入的方法
2016/03/16 PHP
学习YUI.Ext基础第一天
2007/03/10 Javascript
为JavaScript提供睡眠功能(sleep) 自编译JS引擎
2010/08/16 Javascript
理解JSON:3分钟课程
2011/10/28 Javascript
基于jQuery的动态增删改查表格信息,可左键/右键提示(原创自Zjmainstay)
2012/07/31 Javascript
你的 mixin 真的兼容 ECMAScript 5 吗?
2013/04/11 Javascript
JavaScript的21条基本知识点
2014/03/04 Javascript
JavaScript实现的链表数据结构实例
2015/04/02 Javascript
深入理解JavaScript中Ajax
2016/08/02 Javascript
Javascript 引擎工作机制详解
2016/11/30 Javascript
详解Node.js中exports和module.exports的区别
2017/04/19 Javascript
bootstrapvalidator之API学习教程
2017/06/29 Javascript
vue 中动态绑定class 和 style的方法代码详解
2018/06/01 Javascript
jQuery实现checkbox全选功能完整实例
2018/07/12 jQuery
简单了解vue.js数组的常用操作
2019/06/17 Javascript
百度小程序自定义通用toast组件
2019/07/17 Javascript
jQuery 隐藏/显示效果函数用法实例分析
2020/05/20 jQuery
vue3为什么要用proxy替代defineProperty
2020/10/19 Javascript
Vue select 绑定动态变量的实例讲解
2020/10/22 Javascript
用TensorFlow实现戴明回归算法的示例
2018/05/02 Python
分享vim python缩进等一些配置
2018/07/02 Python
python调用虹软2.0第三版的具体使用
2019/02/22 Python
为什么你还不懂得怎么使用Python协程
2019/05/13 Python
CSS Houdini实现动态波浪纹效果
2019/07/30 HTML / CSS
在C语言中"指针和数组等价"到底是什么意思?
2014/03/24 面试题
外贸业务员求职自荐信分享
2013/09/21 职场文书
CAD制图设计师自荐信
2014/01/29 职场文书
食品业务员岗位职责
2014/03/18 职场文书
开业主持词
2014/03/21 职场文书
《真想变成大大的荷叶》教学反思
2014/04/14 职场文书
安全目标管理责任书
2014/07/25 职场文书
2015年安全生产月活动总结
2015/03/26 职场文书
MySQL锁机制
2021/04/05 MySQL
解决MySQL添加新用户-ERROR 1045 (28000)的问题
2022/03/03 MySQL