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提取中文首字母
Apr 09 PHP
用PHP实现读取和编写XML DOM代码
Apr 07 PHP
php源代码安装常见错误与解决办法分享
May 28 PHP
php中用socket模拟http中post或者get提交数据的示例代码
Aug 08 PHP
PHP动态生成javascript文件的2个例子
Apr 11 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
Jun 20 PHP
php each 返回数组中当前的键值对并将数组指针向前移动一步实例
Nov 22 PHP
PHP合并数组函数array_merge用法分析
Feb 17 PHP
浅谈ThinkPHP中initialize和construct的区别
Apr 01 PHP
PHP长连接实现与使用方法详解
Feb 11 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
Apr 04 PHP
PHP时间戳和日期相互转换操作实例小结
Dec 18 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实现mysql同步的实现方法
2009/10/21 PHP
关于PHP模板Smarty的初级使用方法以及心得分享
2013/06/21 PHP
php递归删除目录下的文件但保留的实例分享
2014/05/10 PHP
php实现Mongodb自定义方式生成自增ID的方法
2015/03/23 PHP
Yii使用技巧大汇总
2015/12/29 PHP
thinkPHP线上自动加载异常与修复方法实例分析
2016/12/01 PHP
Laravel利用gulp如何构建前端资源详解
2018/06/03 PHP
详解JavaScript函数绑定
2013/08/18 Javascript
时间戳转换为时间 年月日时间的JS函数
2013/08/19 Javascript
jquery attr方法获取input的checked属性问题
2014/05/26 Javascript
Javascript的严格模式strict mode详细介绍
2014/06/06 Javascript
浅析基于WEB前端页面的页面内容搜索的实现思路
2014/06/10 Javascript
js中split和replace的用法实例
2015/02/28 Javascript
比例尺、缩略图、平移缩放之百度地图添加控件方法
2015/08/03 Javascript
详解Nodejs的timers模块
2016/12/22 NodeJs
Angular2实现组件交互的方法分析
2017/12/19 Javascript
js 公式编辑器 - 自定义匹配规则 - 带提示下拉框 - 动态获取光标像素坐标
2018/01/04 Javascript
vue实现axios图片上传功能
2019/08/20 Javascript
关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version
2020/10/17 Javascript
Django unittest 设置跳过某些case的方法
2018/12/26 Python
python写一个随机点名软件的实例
2019/11/28 Python
python将数组n等分的实例
2019/12/02 Python
python目标检测给图画框,bbox画到图上并保存案例
2020/03/10 Python
Django Serializer HiddenField隐藏字段实例
2020/03/31 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
2021/01/10 Python
德国街头和运动文化高品质商店:BSTN Store
2017/08/26 全球购物
加拿大服装和鞋类零售商:Mark’s
2021/01/04 全球购物
教师通用专业自荐书范文
2014/02/11 职场文书
《孙权劝学》教学反思
2014/04/23 职场文书
研究生求职自荐书
2014/06/23 职场文书
财务工作失误检讨书
2015/02/19 职场文书
冬季作息时间调整通知
2015/04/24 职场文书
北京青年观后感
2015/06/15 职场文书
php远程请求CURL案例(爬虫、保存登录状态)
2021/04/01 PHP
Win11跳过联网界面创建本地管理账户的3种方法
2022/04/20 数码科技
MySQL详解进行JDBC编程与增删改查方法
2022/06/16 MySQL