⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 5.1.php.htm

📁 php5的最新帮助文档
💻 HTM
字号:
<html>
<head>
<meta content="text/html; charset=gb2312" http-equiv=Content-Type>
<title>访客计数器</title>
<style type="text/css">
  a {text-decoration: none;color:#6666ff;}
  a:hover {color:#ff0000;}
</style>
</head>
<body bgcolor=ffffff leftmargin=0 topmargin=0 marginheight=0 marginwidth=0>
<p>
<div align=center><table border=0 width=70%><tr>
<td valign=middle width=20><hr size=1 width=100%></td>
<td valign=middle nowrap><font color=e06060 size=+2><b>访客计数器</b></font></td>
<td valign=middle width=100%><hr size=1 width=100%></td>
</tr></table></div><p>
<div align=center><table border=0 width=70%><tr><td>

访客计数器是让 Web 访客知道该网页或者网站的人气指数最直接的方法。尤其是想利用网页赚钱的人,访客人数是找广告商最好的说词。当然可以将网站来访人数写成统计报表,但总是感觉直接看到比较真实,到底眼见为凭。<p>

        <div align=center><img src="5.1.1.gif" alt="img/5.1.1.gif"></div>
        <p>

在上图中,访客计数器的流程如下
<ol>
<li>第一位用户浏览某页。
<li>服务器程序从数据库或文件中读取该页被浏览次数。
<li>将次数加一储存,并将它送回第一位用户。
<li>第二位用户浏览某页。
<li>服务器程序从数据库或文件中读取该页被浏览次数。
<li>将次数再加一储存,并将它送回第二位用户。
</ol><p>

PHP 在没有特殊的访客计数器函数,但是我们可以用 PHP 的强大功能自已写一个访客计数器函数。<p>

以下的函数是访客计数器的原型,是由 David W. Bettis 所提供,并经过作者少许修改。<p>

<div align=center><table border=1 bgcolor=ffe0e0><tr><td>
<font color="#000000">
&lt;html&gt;<br>&lt;head&gt;<br>&lt;title&gt;访客计数器&nbsp;原型&lt;/title&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br><font color="#0000BB">&lt;?php<br></font><font color="#FF8000">/*<br>simple&nbsp;access&nbsp;counter&nbsp;for&nbsp;php3<br>(c)1998&nbsp;David&nbsp;W.&nbsp;Bettis<br>dbettis@eyeintegrated.com<br>medify&nbsp;by&nbsp;Wilson&nbsp;Peng<br>*/<br><br></font><font color="#0000BB">$counterFile&nbsp;</font><font color="#007700">=&nbsp;&nbsp;</font><font color="#DD0000">"/tmp/counter.txt"</font><font color="#007700">;<br><br>function&nbsp;</font><font color="#0000BB">displayCounter</font><font color="#007700">(</font><font color="#0000BB">$counterFile</font><font color="#007700">)&nbsp;{<br>&nbsp;&nbsp;</font><font color="#0000BB">$fp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000BB">fopen</font><font color="#007700">(</font><font color="#0000BB">$counterFile</font><font color="#007700">,</font><font color="#DD0000">"rw"</font><font color="#007700">);<br>&nbsp;&nbsp;</font><font color="#0000BB">$num&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000BB">fgets</font><font color="#007700">(</font><font color="#0000BB">$fp</font><font color="#007700">,</font><font color="#0000BB">5</font><font color="#007700">);<br>&nbsp;&nbsp;</font><font color="#0000BB">$num&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#007700">+=&nbsp;</font><font color="#0000BB">1</font><font color="#007700">;<br>&nbsp;&nbsp;print&nbsp;&nbsp;</font><font color="#DD0000">"您是第&nbsp;"</font><font color="#007700">.</font><font color="#DD0000">"$num"</font><font color="#007700">.</font><font color="#DD0000">"&nbsp;位无聊份子"</font><font color="#007700">;<br>&nbsp;&nbsp;</font><font color="#0000BB">exec</font><font color="#007700">(&nbsp;</font><font color="#DD0000">"rm&nbsp;-rf&nbsp;$counterFile"</font><font color="#007700">);<br>&nbsp;&nbsp;</font><font color="#0000BB">exec</font><font color="#007700">(&nbsp;</font><font color="#DD0000">"echo&nbsp;$num&nbsp;&gt;&nbsp;$counterFile"</font><font color="#007700">);<br>}<br><br>if&nbsp;(!</font><font color="#0000BB">file_exists</font><font color="#007700">(</font><font color="#0000BB">$counterFile</font><font color="#007700">))&nbsp;{<br>&nbsp;&nbsp;</font><font color="#0000BB">exec</font><font color="#007700">(&nbsp;</font><font color="#DD0000">"echo&nbsp;0&nbsp;&gt;&nbsp;$counterFile"</font><font color="#007700">);<br>}<br><br></font><font color="#0000BB">displayCounter</font><font color="#007700">(</font><font color="#0000BB">$counterFile</font><font color="#007700">);<br><br></font><font color="#0000BB">?&gt;<br></font>&lt;/body&gt;<br>&lt;/html&gt;<br></font>
<p>
<div align=right><font color=c0c0c0 size=-2>Copyright &copy; 1998 David W. Bettis</font></div>
</td></tr></table></div><p>

在读取到本页时,PHP 程序先找寻 /tmp/counter.txt 文件是否存在,若不存在,则建立一个 counter.txt 文件,然后将 0 写入文件。然后读取 counter.txt 文件的内容,也就是纯文字叠,再将内文的数字存入 $num 变量中。在 $num 的变量出现在浏览器前,还有经过加一的步骤,让用户可以增加。当然,如果想灌水,就在加一步骤时加二或者加三,不过自欺是无用的。最后将访客人数再回存 /tmp/counter.txt 就一切 OK。<p><hr size=1>
        <p> 当然,每一页都要这样写,岂不麻烦到了极点。这时,我们可以利用 PHP 提供的 require() 功能,将计数器整理成一个函数,酱子在使用上就方便多多了。
        <p>

首先要先将 Apache 的配置文件 (httpd.conf) 加入 PHP include 文件的路径。例如要设所有的 include 文件都在 http://abcdefghijk.com.tw/include 中,可以在 httpd.conf 加入下面的例子<p>

<code>php3_include_path .:./include:../include</code><p>

别忘了重新启动 Apache 服务器,新增的 include 路径才有效。<p>

<code>./apachectl restart</code><p>

再来就在服务器的 .../include 目录中放入以下的文件,文件名存成 counter.inc<p>

下面就是 MyCounter() 函数。为了让读者方便了解,程序中的变量 $counterFile、$fp 及 $num 保持和 David W. Bettis 所配置的计数器中的变量功能相同。<p>

<div align=center><table border=1 bgcolor=ffe0e0><tr><td>
<font color="#000000">
<font color="#0000BB">&lt;?php<br></font><font color="#FF8000">//---------------------------<br>//&nbsp;访客计数器函数&nbsp;MyCounter()<br>//&nbsp;Author:&nbsp;Wilson&nbsp;Peng<br>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Copyright&nbsp;(C)&nbsp;1999<br>//---------------------------<br></font><font color="#007700">function&nbsp;</font><font color="#0000BB">MyCounter</font><font color="#007700">()&nbsp;{<br>&nbsp;&nbsp;</font><font color="#0000BB">$counterFile</font><font color="#007700">=</font><font color="#DD0000">"/tmp"</font><font color="#007700">.</font><font color="#0000BB">$GLOBALS</font><font color="#007700">[</font><font color="#DD0000">"PHP_SELF"</font><font color="#007700">];<br>&nbsp;&nbsp;if&nbsp;(!</font><font color="#0000BB">file_exists</font><font color="#007700">(</font><font color="#0000BB">$counterFile</font><font color="#007700">))&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!</font><font color="#0000BB">file_exists</font><font color="#007700">(</font><font color="#0000BB">dirname</font><font color="#007700">(</font><font color="#0000BB">$counterFile</font><font color="#007700">)))&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">mkdir</font><font color="#007700">(</font><font color="#0000BB">dirname</font><font color="#007700">(</font><font color="#0000BB">$counterFile</font><font color="#007700">),&nbsp;</font><font color="#0000BB">0700</font><font color="#007700">);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#0000BB">exec</font><font color="#007700">(</font><font color="#DD0000">"echo&nbsp;0&nbsp;&gt;&nbsp;$counterFile"</font><font color="#007700">);<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;</font><font color="#0000BB">$fp&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000BB">fopen</font><font color="#007700">(</font><font color="#0000BB">$counterFile</font><font color="#007700">,</font><font color="#DD0000">"rw"</font><font color="#007700">);<br>&nbsp;&nbsp;</font><font color="#0000BB">$num&nbsp;</font><font color="#007700">=&nbsp;</font><font color="#0000BB">fgets</font><font color="#007700">(</font><font color="#0000BB">$fp</font><font color="#007700">,</font><font color="#0000BB">5</font><font color="#007700">);<br>&nbsp;&nbsp;</font><font color="#0000BB">$num&nbsp;</font><font color="#007700">+=&nbsp;</font><font color="#0000BB">1</font><font color="#007700">;<br>&nbsp;&nbsp;print&nbsp;</font><font color="#DD0000">"$num"</font><font color="#007700">;<br>&nbsp;&nbsp;echo&nbsp;</font><font color="#0000BB">$counterFile</font><font color="#007700">;<br>&nbsp;&nbsp;</font><font color="#0000BB">exec</font><font color="#007700">(</font><font color="#DD0000">"rm&nbsp;-rf&nbsp;$counterFile"</font><font color="#007700">);<br>&nbsp;&nbsp;</font><font color="#0000BB">exec</font><font color="#007700">(</font><font color="#DD0000">"echo&nbsp;$num&nbsp;&gt;&nbsp;$counterFile"</font><font color="#007700">);<br>}<br></font><font color="#0000BB">?&gt;<br></font>
</font>
<p>
<div align=right><font color=c0c0c0 size=-2>Copyright &copy; 1999, Wilson Peng</font></div>
</td></tr></table></div>
        <p> 当然,要用的话要加 <a href="5.1.2a.php.htm" alt="demo/5.1.2.php">Homepage</a> 
          中嵌入 MyCounter() 函数,就可以使用了 
        <p>

<div align=center><table border=1 bgcolor=ffe0e0><tr><td>
<font color="#000000">
<font color="#0000BB">&lt;?php<br></font><font color="#007700">require(</font><font color="#DD0000">"counter.inc"</font><font color="#007700">);<br></font><font color="#0000BB">?&gt;<br></font>&lt;html&gt;<br>&lt;head&gt;<br>&lt;title&gt;访客计数器&nbsp;最终版&lt;/title&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>您是第&nbsp;<font color="#0000BB">&lt;?&nbsp;MyCounter</font><font color="#007700">();&nbsp;</font><font color="#0000BB">?&gt;</font>&nbsp;位参观者<br>&lt;/body&gt;<br>&lt;/html&gt;<br></font>
<p>
<div align=right><font color=c0c0c0 size=-2>Copyright &copy; 1999, Wilson Peng</font></div>
</td></tr></table></div><p>

要用这个 MyCounter() 函数,先在 Homepage 的开头处加入 require() 函数,引入 MyCounter() 函数成为该 Homepage 的一部份。之后再将 &lt;? MyCounter(); ?&gt; 字符串放在需要计数器的地方就可以了。<p>

<FONT color="#0000BB"><FONT color="#007700">function</FONT>&nbsp;MyCounter<FONT color="#007700">(</FONT><FONT color="#007700">)</FONT>&nbsp;<FONT color="#007700">{</FONT><br>
<pre>
:
:
</pre>
<FONT color="#007700">}</FONT></font><p>

在建立函数时,需要用上面的格式。在自订函数名称前加入 function 字符串。<p>

每页有用到 MyCounter() 的 Homepage 都会在 /tmp 之后加入该页的路径,这可以用 $PHP_SELF 变量达成。<p>

<FONT color="#0000BB">&nbsp;&nbsp;$counterFile=<FONT color="#DD0000"><STRONG>"/tmp"</STRONG></FONT>.$GLOBALS[<FONT color="#DD0000"><STRONG>"PHP_SELF"</STRONG></FONT>]<FONT color="#007700">;</FONT></font><p>

当然,若您要将 /tmp 改成别的目录也可以,不然在 SUN 等服务器,要是 reboot,/tmp 中的东西都没了,要重新开始再计数了。若您不知要使用什么目录,建议使用 /var/log/counter 这个目录,和其它的 log 等变动资料放在一起。<p>

<FONT color="#0000BB">&nbsp;&nbsp;<FONT color="#007700">if</FONT>&nbsp;<FONT color="#007700">(</FONT>!file_exists<FONT color="#007700">(</FONT>$counterFile<FONT color="#007700">)</FONT><FONT color="#007700">)</FONT>&nbsp;<FONT color="#007700">{</FONT><br>
&nbsp;&nbsp;&nbsp;&nbsp;<FONT color="#007700">if</FONT>&nbsp;<FONT color="#007700">(</FONT>!file_exists<FONT color="#007700">(</FONT>dirname<FONT color="#007700">(</FONT>$counterFile<FONT color="#007700">)</FONT><FONT color="#007700">)</FONT><FONT color="#007700">)</FONT>&nbsp;<FONT color="#007700">{</FONT><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mkdir<FONT color="#007700">(</FONT>dirname<FONT color="#007700">(</FONT>$counterFile<FONT color="#007700">)</FONT>,&nbsp;0700<FONT color="#007700">)</FONT><FONT color="#007700">;</FONT><br>
&nbsp;&nbsp;&nbsp;&nbsp;<FONT color="#007700">}</FONT><br>
&nbsp;&nbsp;&nbsp;&nbsp;exec<FONT color="#007700">(</FONT><FONT color="#DD0000"><STRONG>"echo&nbsp;0&nbsp;&gt;&nbsp;$counterFile"</STRONG></FONT><FONT color="#007700">)</FONT><FONT color="#007700">;</FONT><br>
&nbsp;&nbsp;<FONT color="#007700">}</FONT></font><p>


这五行主要是检查 $counterFile 是否存在,若文件不存在则看目录是否存在,决定要不要建立目录。之后就建立文件,并写入 0。<p>

<FONT color="#0000BB">&nbsp;&nbsp;$fp&nbsp;=&nbsp;fopen<FONT color="#007700">(</FONT>$counterFile,<FONT color="#DD0000"><STRONG>"rw"</STRONG></FONT><FONT color="#007700">)</FONT><FONT color="#007700">;</FONT><br>
&nbsp;&nbsp;$num&nbsp;=&nbsp;fgets<FONT color="#007700">(</FONT>$fp,5<FONT color="#007700">)</FONT><FONT color="#007700">;</FONT><br>
&nbsp;&nbsp;$num&nbsp;+=&nbsp;1<FONT color="#007700">;</FONT><br>
&nbsp;&nbsp;<FONT color="#007700">print</FONT>&nbsp;<FONT color="#DD0000"><STRONG>"$num"</STRONG></FONT><FONT color="#007700">;</FONT><br>
&nbsp;&nbsp;<FONT color="#007700">echo</FONT>&nbsp;$counterFile<FONT color="#007700">;</FONT></font><p>

这五行就是打开计数器存放的文件,并将它累加后的结果送到浏览器端。<p>

<FONT color="#0000BB">&nbsp;&nbsp;exec<FONT color="#007700">(</FONT><FONT color="#DD0000"><STRONG>"rm&nbsp;-rf&nbsp;$counterFile"</STRONG></FONT><FONT color="#007700">)</FONT><FONT color="#007700">;</FONT><br>
&nbsp;&nbsp;exec<FONT color="#007700">(</FONT><FONT color="#DD0000"><STRONG>"echo&nbsp;$num&nbsp;&gt;&nbsp;$counterFile"</STRONG></FONT><FONT color="#007700">)</FONT><FONT color="#007700">;</FONT></font><p>

最后将计数器文件删除,再重新建立一个。就完成了这个以文件为基础的纯文字计数器。

<p><hr size=1><br>如果你对此手册有任何问题,请到下面网址提问:&nbsp;<a href="www.web745.com">WEB开发知识库</a>&nbsp;(<a href="http://www.web745.com">www.web745.com</a>)<p>
</td></tr></table></div>
<p>
<div align=center>
  <table border=0>
    <tr>
      <td>[ <a href="5.php.htm" alt="5.php">上一页</a> 
      </td>
      <td> <a href="5.2.php.htm" alt="5.2.php">下一页</a> 
        ]</td>
    </tr>
  </table>
</div><p><br><br>

</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -