new-year-gift.php网页上共有十二张壁纸,每张图有1440x900、1024x768两个尺寸。
现在要显示每张图的下载量。
程式流程:
1.新建counter.xml,用来存储数据。结构如下:
- <?xml version="1.0" encoding="utf-8" ?>
- <counter>
- <object id="JAN2011-CE">
- <count>1</count>
- <target id="1440x900">../image/download/JAN2011_CE_1440x900.jpg</target>
- <target id="1024x768">../image/download/JAN2011_CE_1024x768.jpg</target>
- </object>
- ......
- </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的数据。
- <head>
- ……
- <?php
- $counter = simplexml_load_file('../misc/counter.xml');
- ?>
- </head>
2.<body>......</body>中,对链接进行跳页处理,使它指向counter.php,并向counter.php传递参数:
- <body>
- ......
- <table>
- ......
- <tr>
- <td width="200" align="left" style="color:#FF0;font-size:13px">
- <?php
- 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> ";
- 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>";
- echo "<p>Download : ",$counter->object[0]->count,"</p>";
- ?>
- </td>
- ......
- <td>......</td>
- ......
- </tr>
- ......
- </table>
- ......
- </body>
**************************counter.php代码*************************************
- <?php
- $counter = simplexml_load_file('counter.xml');
- foreach($counter->object as $object)
- {
- if($object['id']==$_GET['object'])
- {
- $object->count=$object->count+1;
- $counter->asXML("counter.xml");
- if($_GET['target']==$object->target[0]['id'])
- $url=$object->target[0];
- else
- {
- $url=$object->target[1];
- }
- //告诉浏览器此页面的过期时间(用格林威治时间表示),只要是已经过去的日期即可。
- header("Expires:Mon,26 Jul 1970 05:00:00 GMT");
- //告诉浏览器此页面的最后更新日期(用格林威治时间表示)也就是当天,目的就是强迫浏览器获取最新资料
- header("Last-Modified:".gmdate("D,d M Y H:i:s")."GMT");
- //告诉客户端浏览器不使用缓存
- header("Cache-Control:no-cache,must-revalidate");
- //参数(与以前的服务器兼容),即兼容HTTP1.0协议
- header("Pragma:no-cache");
- //跳至下载页面
- header("Location: $url");
- exit();
- }
- }
- ?>
PS:如果是在linux环境下,记得chmod 666 counter.xml ,否则count+1后的数据不能存储的,那页面也就不能刷新点击次数咯。