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 相关文章推荐
第1次亲密接触PHP5(2)
Oct 09 PHP
一个程序下载的管理程序(四)
Oct 09 PHP
PHP XML数据解析代码
May 26 PHP
PHP5.4中json_encode中文转码的变化小结
Jan 30 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
Apr 17 PHP
thinkPHP导出csv文件及用表格输出excel的方法
Dec 30 PHP
详解PHP的Yii框架中的Controller控制器
Mar 29 PHP
PHP常用的三种设计模式汇总
Aug 28 PHP
PHP入门教程之日期与时间操作技巧总结(格式化,验证,获取,转换,计算等)
Sep 11 PHP
一键生成各种尺寸Icon的php脚本(实例)
Feb 08 PHP
PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
May 29 PHP
PHP二维索引数组的遍历实例分析【2种方式】
Jun 24 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中echo()和print()、require()和include()等易混淆函数的区别
2012/02/22 PHP
使用 PHPMAILER 发送邮件实例应用
2012/11/07 PHP
PHP实现统计所有字符在字符串中出现次数的方法
2017/10/17 PHP
详解PHP版本兼容之openssl调用参数
2018/07/25 PHP
php和html的区别点详细总结
2019/09/24 PHP
一端时间轮换的广告
2006/06/26 Javascript
基于jquery的商品展示放大镜
2010/08/07 Javascript
基于JQUERY的两个ListBox子项互相调整的实现代码
2011/05/07 Javascript
基于jquery的回到页面顶部按钮
2011/06/27 Javascript
jQuery大于号(&gt;)选择器的作用解释
2015/01/13 Javascript
浅析AngularJS Filter用法
2015/12/28 Javascript
JS清除文本框内容离开在恢复及鼠标离开文本框时触发js的方法
2016/01/12 Javascript
vue下跨域设置的相关介绍
2017/08/26 Javascript
使用node.js实现微信小程序实时聊天功能
2018/08/13 Javascript
详解微信小程序实现跑马灯效果(附完整代码)
2019/04/29 Javascript
NodeJs crypto加密制作token的实现代码
2019/11/15 NodeJs
Vue 一键清空表单的实现方法
2020/02/07 Javascript
vue数据更新UI不刷新显示的解决办法
2020/08/06 Javascript
Python中的MongoDB基本操作:连接、查询实例
2015/02/13 Python
python生成式的send()方法(详解)
2017/05/08 Python
python进程管理工具supervisor的安装与使用教程
2017/09/05 Python
python用fsolve、leastsq对非线性方程组求解
2018/12/15 Python
Django框架 查询Extra功能实现解析
2019/09/04 Python
python使用PIL剪切和拼接图片
2020/03/23 Python
CSS3样式linear-gradient的使用实例
2017/01/16 HTML / CSS
电子商务专业在校生实习自我鉴定
2013/09/29 职场文书
公司年会演讲稿范文
2014/01/11 职场文书
企业申诉管理制度
2014/01/30 职场文书
关于廉洁的广播稿
2014/01/30 职场文书
大学军训感言200字
2014/02/26 职场文书
会计学专业求职信
2014/07/17 职场文书
创先争优活动党员公开承诺书
2014/08/29 职场文书
公司授权委托书
2014/10/17 职场文书
学习与创新自我评价
2015/03/09 职场文书
七年级之开学家长寄语35句
2019/09/05 职场文书
Matplotlib绘制混淆矩阵的实现
2021/05/27 Python