PHP提交表单失败后如何保留填写的信息

本文章来给各位同学介绍PHP提交表单失败后如何保留填写的信息一些方法总结,最常用的就是使用缓存方式了,这种方法如果网速慢是可能出问题的,最好的办法就是使用ajax了.

1.使用header头设置缓存控制头Cache-control,PHP代码如下:

header('Cache-control: private, must-revalidate'); //支持页面回跳.

2.使用session_cache_limiter方法,代码如下:

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" );即可

另一种办法我们可以使用ajax来实例,index.html模板文件,代码如下:

  1. <html>
  2. <head>
  3. <title>jQuery Ajax 实例演示</title>
  4. </head>
  5. <script src="./js/jquery.js" type="text/javascript"></script>
  6. <script type="text/javascript">
  7. $(document).ready(function(){//这个就是jQueryready ,它就像C语言的main 所有操作包含在它里面
  8. $("#button_login").mousedown(function(){
  9. login(); //点击ID为"button_login"的按钮后触发函数 login();
  10. });
  11. function login(){ //函数 login();
  12. var username = $("#username").val();//取框中的用户名
  13. var password = $("#password").val();//取框中的密码
  14. $.ajax({ //一个Ajax过程
  15. type: "post", //以post方式与后台沟通
  16. url : "login.php", //与此php页面沟通
  17. dataType:'json',//从php返回的值以 JSON方式 解释
  18. data: 'username='+username+'&password='+password, //发给php的数据有两项,分别是上面传来的u和p
  19. success: function(json){//如果调用php成功
  20. //alert(json.username+'n'+json.password); //把php中的返回值(json.username)给 alert出来
  21. $('#result').html("姓名:" + json.username + "<br/>密码:" + json.password); //把php中的返回值显示在预定义的result定位符位置
  22. }
  23. });
  24. }
  25. //$.post()方式:
  26. $('#test_post').mousedown(function (){
  27. $.post(
  28. 'login.php',
  29. {
  30. username:$('#username').val(),
  31. password:$('#password').val()
  32. },
  33. function (data) //回传函数
  34. {
  35. var myjson='';
  36. eval_r('myjson=' + data + ';');
  37. $('#result').html("姓名1:" + myjson.username + "<br/>密码1:" + myjson.password);
  38. }
  39. );
  40. });
  41. //$.get()方式:
  42. $('#test_get').mousedown(function (){
  43. $.get(
  44. 'login.php',
  45. {
  46. username:$('#username').val(),
  47. password:$('#password').val()
  48. },
  49. function(data) //回传函数
  50. {
  51. var myjson='';
  52. eval_r("myjson=" + data + ";");
  53. $('#result').html("姓名2:" + myjson.username + "<br/>密码2:" + myjson.password);
  54. }
  55. );
  56. });
  57. });
  58. </script>
  59. <body>
  60. <div ></div>
  61. <form action="" method="post">
  62. <p><span>输入姓名:</span><input type="text" name="username" /></p>
  63. <p><span>输入密码:</span><input type="text" name="password" /></p>
  64. </form>
  65. <button >ajax提交</button>
  66. <button >post提交</button>
  67. <button >get提交</button>
  68. </body>
  69. </html>

最初的源码里面好像有一点bug,修改后正常运行,login.php文件,代码如下:

  1. <?php
  2. echo json_encode(array ('username'=>$_REQUEST['username'],'password'=>$_REQUEST['password']));
  3. //开源代码phpfensi.com
  4. ?>

这样的话我们提交不需要刷新页面了,如果失败就直接会有提交了,这样可以100%保存提交失败后数据不被丢失了.