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中使用Oracle数据库(1)
Oct 09 PHP
PHP 输出缓存详解
Jun 20 PHP
php去除重复字的实现代码
Sep 16 PHP
PHP中怎样保持SESSION不过期 原理及方案介绍
Aug 08 PHP
php使用Imagick生成图片的方法
Jul 31 PHP
PHP中常用的数组操作方法笔记整理
May 16 PHP
php+ajax简单实现全选删除的方法
Dec 06 PHP
laravel 5.1下php artisan migrate的使用注意事项总结
Jun 07 PHP
PHP ADODB生成下拉列表框功能示例
May 29 PHP
PHP实现类似题库抽题效果
Aug 16 PHP
PHP生成随机码的思路与方法实例探索
Apr 11 PHP
用php实现分页效果的示例代码
Dec 10 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
PHP中3种生成XML文件方法的速度效率比较
2012/10/06 PHP
php生成数组的使用示例 php全组合算法
2014/01/16 PHP
ThinkPHP CURD方法之table方法详解
2014/06/18 PHP
PHP实现的QQ空间g_tk加密算法
2015/07/09 PHP
从性能方面考虑PHP下载远程文件的3种方法
2015/12/29 PHP
Yii2中OAuth扩展及QQ互联登录实现方法
2016/05/16 PHP
PHP简单字符串过滤方法示例
2016/09/04 PHP
javascript 关于# 和 void的区别分析
2009/10/26 Javascript
jquery 图片缩放拖动的简单实例
2014/01/08 Javascript
JavaScript跨域方法汇总
2014/10/16 Javascript
bootstarp modal框居中显示的实现代码
2017/02/18 Javascript
Vue常用指令V-model用法
2017/03/08 Javascript
ES6新特性之变量和字符串用法示例
2017/04/01 Javascript
JavaScript之json_动力节点Java学院整理
2017/06/29 Javascript
vue-resource拦截器设置头信息的实例
2017/10/27 Javascript
vuejs实现递归树型菜单组件
2018/01/13 Javascript
React中使用UEditor百度富文本的方法
2018/08/22 Javascript
JS实现鼠标按下拖拽效果
2020/07/23 Javascript
vue 获取元素额外生成的data-v-xxx操作
2020/09/09 Javascript
python实现矩阵乘法的方法
2015/06/28 Python
如何在Python函数执行前后增加额外的行为
2016/10/20 Python
详解从Django Rest Framework响应中删除空字段
2019/01/11 Python
详解python metaclass(元类)
2020/08/13 Python
Python3.8安装Pygame教程步骤详解
2020/08/14 Python
Prometheus开发中间件Exporter过程详解
2020/11/30 Python
CSS3中的transform属性进行2D和3D变换的基本用法
2016/05/12 HTML / CSS
迪奥官网:Dior.com
2018/12/04 全球购物
阿迪达斯香港官网:adidas香港
2019/11/09 全球购物
考试不及格的检讨书
2014/01/22 职场文书
自荐信如何制作?
2014/02/21 职场文书
2014年3.15团委活动总结
2014/03/16 职场文书
2014年度党员自我评议
2014/09/13 职场文书
2015年初中元旦晚会活动总结
2014/11/28 职场文书
简历自我评价优缺点
2015/03/11 职场文书
redis sentinel监控高可用集群实现的配置步骤
2022/04/01 Redis
浅析Python OpenCV三种滤镜效果
2022/04/11 Python