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 相关文章推荐
文件上传类
Oct 09 PHP
PHP 时间转换Unix时间戳代码
Jan 22 PHP
PHP exif扩展方法开启详解
Jul 28 PHP
php图片的二进制转换实现方法
Dec 15 PHP
微信公众平台消息接口校验与消息接口响应实例
Dec 23 PHP
yii去掉必填项中星号的方法
Dec 28 PHP
PHP将页面中点击数量高的链接进行高亮显示的方法
May 30 PHP
php抽奖概率算法(刮刮卡,大转盘)
Apr 17 PHP
PHP学习笔记之session
May 06 PHP
PHP中一个有趣的preg_replace函数详解
Aug 15 PHP
PHP的cookie与session原理及用法详解
Sep 27 PHP
设定php简写功能的方法
Nov 28 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使用fopen与file_get_contents读取文件实例分享
2016/03/04 PHP
JavaScript 布尔操作符解析  &amp;&amp; || !
2012/08/10 Javascript
网页禁用右键菜单和鼠标拖动选择方法小结
2015/02/25 Javascript
基于Jquery实现表单验证
2020/07/20 Javascript
关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别
2015/10/12 Javascript
基于JavaScript实现div层跟随滚动条滑动
2016/01/12 Javascript
JQuery遍历元素的父辈和祖先的方法
2016/09/18 Javascript
微信小程序 WXDropDownMenu组件详解及实例代码
2016/10/24 Javascript
AngularJS入门教程之表单校验用法示例
2016/11/02 Javascript
JavaScript验证知识整理
2017/03/24 Javascript
javascript实现二叉树遍历的代码
2017/06/08 Javascript
jQuery制作input提示内容(兼容IE8以上)
2017/07/05 jQuery
带你快速理解javascript中的事件模型
2017/08/14 Javascript
原生JS实现获取及修改CSS样式的方法
2018/09/04 Javascript
JS学习笔记之闭包小案例分析
2019/05/29 Javascript
微信小程序页面调用自定义组件内的事件详解
2019/09/12 Javascript
Vue Components 数字键盘的实现
2019/09/18 Javascript
node读写Excel操作实例分析
2019/11/06 Javascript
JsonServer安装及启动过程图解
2020/02/28 Javascript
JS访问对象两种方式区别解析
2020/08/29 Javascript
使用Kivy将python程序打包为apk文件
2017/07/29 Python
python学习基础之循环import及import过程
2018/04/22 Python
Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)
2020/04/08 Python
Python偏函数实现原理及应用
2020/11/20 Python
Pandas对每个分组应用apply函数的实现
2020/12/13 Python
html5实现九宫格抽奖可固定抽中某项奖品
2020/06/15 HTML / CSS
金融学专业大学生职业生涯规划
2014/03/07 职场文书
最经典的商业地产项目广告词
2014/03/13 职场文书
装饰工程师岗位职责
2014/06/08 职场文书
小学社会实践活动总结
2014/07/03 职场文书
2014年学校办公室工作总结
2014/12/19 职场文书
销售员岗位职责
2015/02/10 职场文书
2015年度房地产工作总结
2015/04/09 职场文书
七年级数学教学反思
2016/02/17 职场文书
JAVA长虹键法之建造者Builder模式实现
2022/04/10 Java/Android
分析MySQL优化 index merge 后引起的死锁
2022/04/19 MySQL