网页计数器-SimpleXML调用XML数据

new-year-gift.php网页上共有十二张壁纸,每张图有1440x900、1024x768两个尺寸。

现在要显示每张图的下载量。

 

程式流程:

1.新建counter.xml,用来存储数据。结构如下:

 

  
  
  
  
  1. <?xml version="1.0" encoding="utf-8" ?> 
  2. <counter> 
  3.     <object id="JAN2011-CE"> 
  4.         <count>1</count> 
  5.         <target id="1440x900">../image/download/JAN2011_CE_1440x900.jpg</target> 
  6.         <target id="1024x768">../image/download/JAN2011_CE_1024x768.jpg</target> 
  7.     </object> 
  8.     ...... 
  9. </counter> 


2. new-year-gift.php �_��r,先�x出每�� object 的 count �抵担�然後呈�F下�d�,如下:

 

3. 使用者在 new-year-gift.php �c了某��下�d�B�Y�r,呼叫 counter.php?object=CE&target=1024x768,跳至counter.php页面进行count+1操作。


4. counter.php 的�幼黜�序:
   4.1. �� URL 的��抵斜孀R使用者�c了哪��物件 (object)、要下�d哪��
�B �Y (target)。
   4.2. �� counter.xml �x取���的�抵�(count),��抵导� 1後��回 counter.xml
      �楹涡枰�在 counter.php 重新�x取�抵担渴且�槟澄皇褂谜咴�g�[下�d�的同�r,可能有其他使用者�M行下�d。因此� �灯� 需要一口�庾鐾辍鹤x出、加一、存入』的�幼鳌�

5. ��低瓿舍幔�重��向到下�d�B�Y (target) 的 URL

 

****************new-year-gift.php部分代码*******************

1.在<head>......</head>中,SimpleXML调用counter.xml的数据。

  
  
  
  
  1. <head> 
  2. …… 
  3. <?php 
  4. $counter = simplexml_load_file('../misc/counter.xml'); 
  5. ?> 
  6. </head> 

 

2.<body>......</body>中,对链接进行跳页处理,使它指向counter.php,并向counter.php传递参数:

  
  
  
  
  1. <body> 
  2. ...... 
  3. <table> 
  4. ...... 
  5. <tr> 
  6.       <td width="200" align="left" style="color:#FF0;font-size:13px"
  7.         <?php  
  8.             echo "<a href=../misc/counter.php?object=",$counter->object[0]['id'],"&target=",$counter->object[0]->target[0]['id'],">",$counter->object[0]->target[0]['id'],"</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"
  9.             echo "<a href=../misc/counter.php?object=",$counter->object[0]['id'],"&target=",$counter->object[0]->target[1]['id'],">",$counter->object[0]->target[1]['id'],"</a><br>"
  10.             echo "<p>Download&nbsp;:&nbsp;",$counter->object[0]->count,"</p>"
  11.         ?>   
  12.       </td> 
  13.       ...... 
  14.       <td>......</td> 
  15.       ...... 
  16. </tr> 
  17. ...... 
  18. </table> 
  19. ...... 
  20. </body> 

 

**************************counter.php代码*************************************

  
  
  
  
  1. <?php 
  2.  
  3. $counter = simplexml_load_file('counter.xml'); 
  4.  
  5. foreach($counter->object as $object
  6.  
  7.  
  8.     if($object['id']==$_GET['object']) 
  9.  
  10.     { 
  11.  
  12.         $object->count=$object->count+1; 
  13.  
  14.         $counter->asXML("counter.xml"); 
  15.  
  16.         if($_GET['target']==$object->target[0]['id']) 
  17.  
  18.             $url=$object->target[0]; 
  19.  
  20.         else 
  21.  
  22.         { 
  23.  
  24.              $url=$object->target[1]; 
  25.  
  26.         } 
  27.  
  28.          
  29.  
  30.         //告诉浏览器此页面的过期时间(用格林威治时间表示),只要是已经过去的日期即可。   
  31.        header("Expires:Mon,26 Jul 1970 05:00:00 GMT");   
  32.   
  33.  
  34.        //告诉浏览器此页面的最后更新日期(用格林威治时间表示)也就是当天,目的就是强迫浏览器获取最新资料   
  35.        header("Last-Modified:".gmdate("D,d M Y H:i:s")."GMT");   
  36.   
  37.  
  38.        //告诉客户端浏览器不使用缓存   
  39.        header("Cache-Control:no-cache,must-revalidate");   
  40.   
  41.  
  42.        //参数(与以前的服务器兼容),即兼容HTTP1.0协议   
  43.        header("Pragma:no-cache"); 
  44.          
  45.  
  46.        //跳至下载页面   
  47.        header("Location: $url"); 
  48.        exit(); 
  49.  
  50.     } 
  51.  
  52.  
  53. ?> 

 

PS:如果是在linux环境下,记得chmod 666 counter.xml ,否则count+1后的数据不能存储的,那页面也就不能刷新点击次数咯。




你可能感兴趣的:(xml,PHP,页面跳转,休闲,simplexml)