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 相关文章推荐
不用iconv库的gb2312与utf-8的互换函数
Oct 09 PHP
做个自己站内搜索引擎
Oct 09 PHP
php实现的在线人员函数库
Apr 09 PHP
PHP 抓取网页图片并且另存为的实现代码
Mar 24 PHP
解析thinkphp基本配置 convention.php
Jun 18 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
Jun 25 PHP
解析PHP 5.5 新特性
Jul 02 PHP
destoon之一键登录设置
Jun 21 PHP
php使用pdo连接报错Connection failed SQLSTATE的解决方法
Dec 15 PHP
PHP查询附近的人及其距离的实现方法
May 11 PHP
PHP简单读取PDF页数的实现方法
Jul 21 PHP
详解PHP PDO简单教程
May 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调用C#开发的dll类库方法
2014/07/28 PHP
PHP观察者模式定义与用法实例分析
2019/03/22 PHP
解决在laravel中auth建立时候遇到的问题
2019/10/15 PHP
jquery、js调用iframe父窗口与子窗口元素的方法整理
2014/07/31 Javascript
angularjs学习笔记之简单介绍
2015/09/26 Javascript
React创建组件的三种方式及其区别
2017/01/12 Javascript
详解vue-Resource(与后端数据交互)
2017/01/16 Javascript
node.js实现回调的方法示例
2017/03/01 Javascript
ES6学习之变量的两种命名方法示例
2017/07/18 Javascript
利用JS实现scroll自定义滚动效果详解
2017/10/17 Javascript
使用Node.js实现ORM的一种思路详解(图文)
2017/10/24 Javascript
vue中动态绑定表单元素的属性方法
2018/02/23 Javascript
使用JSON格式提交数据到服务端的实例代码
2018/04/01 Javascript
JavaScript实现数字前补“0”的五种方法示例
2019/01/03 Javascript
在Node.js下运用MQTT协议实现即时通讯及离线推送的方法
2019/01/24 Javascript
JS FormData对象使用方法实例详解
2020/02/12 Javascript
Vue前端判断数据对象是否为空的实例
2020/09/02 Javascript
[45:46]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS DT
2014/05/23 DOTA
仅用50行Python代码实现一个简单的代理服务器
2015/04/08 Python
python3 拼接字符串的7种方法
2018/09/12 Python
Python的条件表达式和lambda表达式实例
2019/01/31 Python
python Gunicorn服务器使用方法详解
2019/07/22 Python
Python处理session的方法整理
2019/08/29 Python
python实现将视频按帧读取到自定义目录
2019/12/10 Python
Python 模拟生成动态产生验证码图片的方法
2020/02/01 Python
requests在python中发送请求的实例讲解
2021/02/17 Python
中专毕业生个人职业生涯规划
2014/02/19 职场文书
人民教师的自我评价分享
2014/02/21 职场文书
竞选班长自荐书范文
2014/03/09 职场文书
会展策划与管理专业求职信
2014/06/09 职场文书
2014年初一班主任工作总结
2014/11/08 职场文书
公司庆典欢迎词
2015/01/26 职场文书
产品调价通知函
2015/04/20 职场文书
JVM钩子函数的使用场景详解
2021/08/23 Java/Android
Java实现添加条码或二维码到Word文档
2022/06/01 Java/Android
GO中sync包自由控制并发示例详解
2022/08/05 Golang