PHP通过文件保存和更新信息的方法分析

本文实例讲述了PHP通过文件保存和更新信息的方法,分享给大家供大家参考,具体如下:

引言

以前在编写一个比赛的机试系统的时候,需要记录和更新考试的截止时间,以前的做法是在数据库中单独建立一个数据表用于保存和更新截止时间。回过头再去看,觉得没有必要单独建立一张表,只需要把时间保存到一个文件中,然后通过修改文件的内容修改考试时间即可。

以前的方案

PHP通过文件保存和更新信息的方法分析

maybe, a little bit stupid….

现在的方案

基本思路:

  1. $time = addslashes($_POST['time']);
  2. $file = md5("time");
  3. $res = file_put_contents($file, $time);

用于保存时间的文件:

PHP通过文件保存和更新信息的方法分析

这种明明方式是出于安全考虑,方式被一些扫描器扫描到。

最后附上完整代码:

manage-time.html

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>时间管理页面</title>
  6. <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script>
  7. <style type="text/css">
  8. *{
  9. line-height: 30px;
  10. }
  11. </style>
  12. </head>
  13. <body>
  14. <div>
  15. <p>当前时间:<font ></font></p>
  16. <p><input type="text"/></p>
  17. <p><button >更新时间</button></p>
  18. </div>
  19. <script type="text/javascript">
  20. $(function(){
  21. //获取时间
  22. $("#info").load("time.php");
  23. //更新时间
  24. $("#update").click(function(){
  25. var time = $("#time").val();
  26. if(time==''){
  27. alert("时间不能为空");
  28. }else{
  29. $.ajax({
  30. url:'time.php',
  31. type:'POST',
  32. data:{'time':time},
  33. dataType:"json",
  34. success:function(data){
  35. if(data.success){
  36. $("#info").html(data.time);
  37. }else{
  38. $("#info").html("更新失败");
  39. }
  40. },
  41. error:function(res){
  42. alert("发生错误:"+res.status);
  43. }
  44. });
  45. }
  46. });
  47. })
  48. </script>
  49. </body>
  50. </html>

time.php

  1. <?php
  2. date_default_timezone_set('Asia/Shanghai');
  3. if(isset($_POST['time']) && $_POST['time']!=''){
  4. $time = addslashes($_POST['time']);
  5. update($time);
  6. }else{
  7. display();
  8. //update('2011-11-11 11:11:00');
  9. }
  10. function display(){
  11. $file = md5("time");
  12. $time = file_get_contents($file);
  13. echo $time;
  14. }
  15. function update($time){
  16. if($time == ''){
  17. echo '{"success":false}';
  18. exit();
  19. }
  20. $file = md5("time");
  21. $res = file_put_contents($file, $time);
  22. if($res>0){
  23. echo '{"success":true,"time":"'.$time.'"}';
  24. }else{
  25. echo '{"success":false}';
  26. }
  27. }

对于有些小系统,只有一个管理员的可将用户名和密码直接写入到登陆判断页面中,或者像这个例子一样,使用一个md5加密后的字符串作为文件名的文件保存用户名和密码。