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 相关文章推荐
15个小时----从修改程序到自己些程序
Oct 09 PHP
PHP 图片水印类代码
Aug 27 PHP
PHP把JPEG图片转换成Progressive JPEG的方法
Jun 30 PHP
PHP封装CURL扩展类实例
Jul 28 PHP
PHP实现将标点符号正则替换为空格的方法
Aug 09 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
Sep 28 PHP
PHP双向链表定义与用法示例
Jan 31 PHP
PHP实现正则表达式分组捕获操作示例
Feb 03 PHP
PHP针对redis常用操作实例详解
Aug 17 PHP
Yii框架通过请求组件处理get,post请求的方法分析
Sep 03 PHP
php将字符串转换为数组实例讲解
May 05 PHP
PHP var关键字相关原理及使用实例解析
Jul 11 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 curl选项列表(超详细)
2013/07/01 PHP
php从字符串创建函数的方法
2015/03/16 PHP
Symfony2创建页面实例详解
2016/03/18 PHP
获取HTML DOM节点元素的方法的总结
2009/08/21 Javascript
替代window.event.srcElement效果的可兼容性的函数
2009/12/18 Javascript
Jvascript学习实践案例(开发常用)
2012/06/25 Javascript
使用firebug进行调试javascript的示例
2013/12/16 Javascript
简单的jQuery入门指引
2015/07/28 Javascript
jquery插件jquery.dragscale.js实现拖拽改变元素大小的方法(附demo源码下载)
2016/02/25 Javascript
jQuery如何防止Ajax重复提交
2016/10/14 Javascript
关于AngularJs数据的本地存储详解
2017/01/20 Javascript
Vue2.0实现购物车功能
2017/06/05 Javascript
vue 2.0封装model组件的方法
2017/08/03 Javascript
js实现数组内数据的上移和下移的实例
2017/11/14 Javascript
nodejs更新package.json中的dependencies依赖到最新版本的方法
2018/10/10 NodeJs
Vue.js 中的 v-model 指令及绑定表单元素的方法
2018/12/03 Javascript
[03:53]2016国际邀请赛中国区预选赛第三日TOP10精彩集锦
2016/06/29 DOTA
[01:00:35]2018DOTA2亚洲邀请赛3月30日B组 EffcetVSMineski
2018/03/31 DOTA
Python中函数的参数定义和可变参数用法实例分析
2015/06/04 Python
Python实现批量转换文件编码的方法
2015/07/28 Python
解决python大批量读写.doc文件的问题
2018/05/08 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
2020/02/29 Python
Win 10下Anaconda虚拟环境的教程
2020/05/18 Python
opencv 图像腐蚀和图像膨胀的实现
2020/07/07 Python
IE滤镜与CSS3效果(详细整理分享)
2013/01/25 HTML / CSS
德国旅游网站:weg.de
2018/06/03 全球购物
澳洲本土太阳镜品牌:Quay Australia
2019/07/29 全球购物
华硕新加坡官方网上商店:ASUS Singapore
2020/07/09 全球购物
Vinatis德国:法国领先的葡萄酒邮购公司
2020/09/07 全球购物
大学生暑期实践感言
2014/02/26 职场文书
教师党员承诺书2015
2015/01/21 职场文书
党支部意见范文
2015/06/02 职场文书
博物馆观后感
2015/06/05 职场文书
先进教师个人主要事迹材料
2015/11/03 职场文书
职场干货:简历中的自我评价应该这样写!
2019/05/06 职场文书
Django实现翻页的示例代码
2021/05/24 Python