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产生随机数的两种方法实例代码 输出随机IP
Apr 08 PHP
用PHP实现的四则运算表达式计算实现代码
Aug 02 PHP
深入php函数file_get_contents超时处理的方法详解
Jun 03 PHP
探讨:如何通过stats命令分析Memcached的内部状态
Jun 14 PHP
win7计划任务定时执行PHP脚本设置图解
May 09 PHP
PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子
May 10 PHP
PHP把小数转成整数3种方法
Jun 30 PHP
简单谈谈php延迟静态绑定
Jan 26 PHP
PHP数学运算与数据处理实例分析
Apr 01 PHP
CodeIgniter框架验证码类库文件与用法示例
Mar 18 PHP
PHP中单例模式的使用场景与使用方法讲解
Mar 18 PHP
laravel excel 上传文件保存到本地服务器功能
Nov 14 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
WML,Apache,和 PHP 的介绍
2006/10/09 PHP
SMARTY学习手记
2007/01/04 PHP
php 上传功能实例代码
2010/04/13 PHP
php自动加载机制的深入分析
2013/06/08 PHP
php获取$_POST同名参数数组的实现介绍
2013/06/30 PHP
PHP读取配置文件类实例(可读取ini,yaml,xml等)
2015/07/28 PHP
JavaScript中获取元素索引的函数
2010/09/10 Javascript
js自动下载文件到本地的实现代码
2013/04/28 Javascript
jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别
2013/12/02 Javascript
jquery实现在页面加载完毕后获取图片高度或宽度
2014/06/16 Javascript
小结Node.js中非阻塞IO和事件循环
2014/09/18 Javascript
自定义刻度jQuery进度条及插件
2015/09/02 Javascript
JQuery解析XML数据的几个简单实例
2016/05/18 Javascript
基于JavaScript Array数组方法(新手必看篇)
2016/08/20 Javascript
JS调用某段SQL语句的方法
2016/10/20 Javascript
教你快速搭建Node.Js服务器的方法教程
2017/03/30 Javascript
原生JS进行前后端同构
2018/04/22 Javascript
深度了解vue.js中hooks的相关知识
2019/06/14 Javascript
Vuex模块化应用实践示例
2020/02/03 Javascript
pydev使用wxpython找不到路径的解决方法
2013/02/10 Python
Python循环语句中else的用法总结
2016/09/11 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
2019/08/31 Python
详解opencv中画圆circle函数和椭圆ellipse函数
2019/12/27 Python
python opencv 实现对图像边缘扩充
2020/01/19 Python
Python基于内置库pytesseract实现图片验证码识别功能
2020/02/24 Python
Django REST Framework 分页(Pagination)详解
2020/11/30 Python
澳大利亚女性快速时尚零售商:Ally Fashion
2018/04/25 全球购物
白俄罗斯在线大型超市:e-dostavka.by
2019/07/25 全球购物
澳大利亚领先的女帽及配饰公司:Morgan&Taylor
2019/12/01 全球购物
正风肃纪剖析材料
2014/02/18 职场文书
精神文明建设先进工作者事迹材料
2014/05/02 职场文书
党的生日演讲稿
2014/09/10 职场文书
2014年绿化工作总结
2014/12/09 职场文书
支教个人总结
2015/03/04 职场文书
初中教务主任竞聘演讲稿(范文)
2019/08/20 职场文书
Java对文件的读写操作方法
2022/04/29 Java/Android