国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開發(fā) > PHP > 正文

PHP網(wǎng)頁(yè)計(jì)數(shù)器的原理

2024-05-04 23:05:12
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
  訪客計(jì)數(shù)器是讓 web 訪客知道該網(wǎng)頁(yè)或者網(wǎng)站的人氣指數(shù)最直接的方法。尤其是想利用網(wǎng)頁(yè)賺錢的人,訪客人數(shù)是找廣告商最好的說詞。當(dāng)然可以將網(wǎng)站來(lái)訪人數(shù)寫成統(tǒng)計(jì)報(bào)表,但總是感覺直接看到比較真實(shí),到底眼見為憑。


在上圖中,訪客計(jì)數(shù)器的流程如下

1.. 第一位使用者瀏覽某頁(yè)。
2.. 伺服器程式從資料庫(kù)或檔案中讀取該頁(yè)被瀏覽次數(shù)。
3.. 將次數(shù)加一儲(chǔ)存,并將它送回第一位使用者。
4.. 第二位使用者瀏覽某頁(yè)。
5.. 伺服器程式從資料庫(kù)或檔案中讀取該頁(yè)被瀏覽次數(shù)。
6.. 將次數(shù)再加一儲(chǔ)存,并將它送回第二位使用者。
php 在沒有特殊的訪客計(jì)數(shù)器函式,但是我們可以用 php 的強(qiáng)大功能自已寫一個(gè)訪客計(jì)數(shù)器函式。

以下的函式是訪客計(jì)數(shù)器的原型,是由 david w. bettis 所提供,并經(jīng)過作者少許修改。


<html>
<head>
<title>訪客計(jì)數(shù)器 原型</title>
</head>
<body>
<?php
/*
simple access counter for php3
(c)1998 david w. bettis
[email protected]
medify by wilson peng
*/

$counterfile = "/tmp/counter.txt";

function displaycounter($counterfile) {
$fp = fopen($counterfile,"rw");
$num = fgets($fp,5);
$num += 1;
print "您是第 "."$num"." 位無(wú)聊份子";
exec( "rm -rf $counterfile");
exec( "echo $num > $counterfile");
}

if (!file_exists($counterfile)) {
exec( "echo 0 > $counterfile");
}

displaycounter($counterfile);

?>
</body>
</html>


copyright ? 1998 david w. bettis

在讀取到本頁(yè)時(shí),php 程式先找尋 /tmp/counter.txt 檔案是否存在,若不存在,則建立一個(gè) counter.txt 檔案,然后將 0 寫入檔案。然后讀取 counter.txt 檔案的內(nèi)容,也就是純文字檔,再將內(nèi)文的數(shù)字存入 $num 變數(shù)中。在 $num 的變數(shù)出現(xiàn)在瀏覽器前,還有經(jīng)過加一的動(dòng)作,讓使用者可以增加。當(dāng)然,如果想灌水,就在加一動(dòng)作時(shí)加二或者加三,不過自欺是無(wú)用的。最后將訪客人數(shù)再回存 /tmp/counter.txt
就一切 ok。

當(dāng)然,每一頁(yè)都要這樣寫,豈不麻煩到了極點(diǎn)。這時(shí),我們可以利用 php 提供的 require() 功能,將計(jì)數(shù)器整理成一個(gè)函式,醬子在使用上就方便多多了。

首先要先將 apache 的設(shè)定檔 (httpd.conf) 加入 php include 檔案的路徑。例如要設(shè)所有的 include 檔都在 http://abcdefghijk.com.tw/include 中,可以在httpd.conf 加入下面的例子

php3_include_path .:./include:../include

別忘了重新啟動(dòng) apache 伺服器,新增的 include 路徑才有效。

./apachectl restart

再來(lái)就在伺服器的 .../include 目錄中放入以下的檔案,檔名存成
counter.inc

下面就是 mycounter() 函式。為了讓讀者方便了解,程式中的變數(shù)
$counterfile、$fp 及 $num 保持和 david w. bettis 所設(shè)定的計(jì)數(shù)器中的變數(shù)功能相同。


<?php
file://---------------------------
// 訪客計(jì)數(shù)器函式 mycounter()
// author: wilson peng
// copyright (c) 1999
file://---------------------------
function mycounter() {
$counterfile="/tmp".$globals["php_self"];
if (!file_exists($counterfile)) {
if (!file_exists(dirname($counterfile))) {
mkdir(dirname($counterfile), 0700);
}
exec("echo 0 > $counterfile");
}
$fp = fopen($counterfile,"rw");
$num = fgets($fp,5);
$num += 1;
print "$num";
echo $counterfile;
exec("rm -rf $counterfile");
exec("echo $num > $counterfile");
}
?>


copyright ? 1999, wilson peng

當(dāng)然,要用的話要加 homepage 中嵌入 mycounter() 函式,就可以使用了。


<?php
require("counter.inc");
?>
<html>
<head>
<title>訪客計(jì)數(shù)器 最終版</title>
</head>
<body>
您是第 <? mycounter(); ?> 位參觀者
</body>
</html>


copyright ? 1999, wilson peng

要用這個(gè) mycounter() 函式,先在 homepage 的開頭處加入 require() 函式,引入 mycounter() 函式成為該 homepage 的一部份。之后再將 <? mycounter(); ?>字串放在需要計(jì)數(shù)器的地方就可以了。

function mycounter() {
:
:

}
在建立函式時(shí),需要用上面的格式。在自訂函式名稱前加入 function 字串。

每頁(yè)有用到 mycounter() 的 homepage 都會(huì)在 /tmp 之后加入該頁(yè)的路徑,這可以用 $php_self 變數(shù)達(dá)成。

$counterfile="/tmp".$globals["php_self"];

當(dāng)然,若您要將 /tmp 改成別的目錄也可以,不然在 sun 等伺服器,要是reboot,/tmp 中的東西都沒了,要重新開始再計(jì)數(shù)了。若您不知要使用什么目錄,建議使用 /var/log/counter 這個(gè)目錄,和其它的 log 等變動(dòng)資料放在一起。

if (!file_exists($counterfile)) {
if (!file_exists(dirname($counterfile))) {
mkdir(dirname($counterfile), 0700);
}
exec("echo 0 > $counterfile");
}

這五行主要是檢查 $counterfile 是否存在,若檔案不存在則看目錄是否存在,決定要不要建立目錄。之后就建立檔案,并寫入 0。

$fp = fopen($counterfile,"rw");
$num = fgets($fp,5);
$num += 1;
print "$num";
echo $counterfile;

這五行就是打開計(jì)數(shù)器存放的檔案,并將它累加后的結(jié)果送到瀏覽器端。

exec("rm -rf $counterfile");
exec("echo $num > $counterfile");

最后將計(jì)數(shù)器檔案刪除,再重新建立一個(gè)。就完成了這個(gè)以檔案為基礎(chǔ)的純文字計(jì)數(shù)器。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 潢川县| 行唐县| 威海市| 东方市| 怀宁县| 古浪县| 张家港市| 育儿| 土默特左旗| 祥云县| 太保市| 鄂托克旗| 怀远县| 沧源| 丰城市| 抚远县| 繁峙县| 永福县| 东城区| 获嘉县| 旬邑县| 吉木乃县| 通许县| 蓬溪县| 开远市| 积石山| 五峰| 西盟| 荔浦县| 柳江县| 苏尼特左旗| 海宁市| 郎溪县| 平罗县| 曲麻莱县| 峡江县| 封丘县| 阳泉市| 嘉荫县| 泗洪县| 石林|