欧美日韩精品在线,国内精品久久久久久久久,一级毛片恃级毛片直播,清纯唯美亚洲综合欧美色

網(wǎng)頁實例:詳細(xì)介紹用PHP來編寫網(wǎng)頁記數(shù)器_PHP教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:動態(tài)網(wǎng)頁中直接不讓訪問PHP程序文件
由于我們有需要用到某些php文件,而又不希望別人直接訪問這個文件,我們可以在其他包含文件比如global.php中定義一個參數(shù),在被訪問頁面data.php前面判斷是否定義了該參數(shù),沒有定義則禁止訪問。

本款計數(shù)器用文本計數(shù)。沒有用到數(shù)據(jù)庫,可以實現(xiàn)如下功能:

利用一個文本文件實現(xiàn)多個頁的計數(shù)減少服務(wù)器的I/O占用率在需要紀(jì)錄的文件里,只需加入很少的幾行代碼

基本思路如下:

服務(wù)器程序從文本文件中讀取該頁被瀏覽的次數(shù),(因為所有文件向服務(wù)器提出請求時,他們的環(huán)境變量REQUEST_URI都代表他來自于何處... ...,所以,以請求文件的環(huán)境變量REQUEST_URI來辨別到底是那一頁正被瀏覽。),將這個次數(shù)加一儲存,并在調(diào)用這頁的用戶的計算機(jī)上顯示出來。

請先看我的數(shù)據(jù)文本中紀(jì)錄的數(shù)據(jù)樣本,(紅色為瀏覽次數(shù),其前面為相應(yīng)的被瀏覽的文件)

counter.php

以下為引用的內(nèi)容:

<html>
<head>
<title>計數(shù)器</title>
<head>
<body>
<?php
/* 定義儲存數(shù)據(jù)的文本文件 */
$counterFile="counter.dat\";
/* 定義一個標(biāo)記,用來辨別現(xiàn)在需紀(jì)錄的數(shù)據(jù)是否已經(jīng)文本數(shù)據(jù)中 */
$sign=False;
/* 將數(shù)據(jù)以數(shù)組的方式讀入變量 $sounterData 備用, */
$counterData=file($counterFile);
/* 用count()函數(shù)計算共有多少個紀(jì)錄 */
/* 用explode()函數(shù)把$counterData[$i]按符號\"|\"分開,并以數(shù)組的方式送回到變量$varArray里 */
/* 函數(shù)implode()與explode()剛剛相反,把數(shù)組$varArray以符號\"|\"連接起來送回到$counterData */
/* 還利用了環(huán)境變量$PATH_INFO
for($i=0;$i<=count($counterData)-1;$i )
 {
  $varArray=explode(\"|\",$counterData[$i]);
  if ($varArray[0]==$GLOBALS[\"REQUEST_URI\"])
   {
    $varArray[1] ;
    print($varArray[1]);
    $counterData[$i]=implode(\"|\", $varArray);
    $sign=True;
    /* 找到本紀(jì)錄所在的位置后, 用break 退出循環(huán) */ 
    break;
   }
 }
/* 在這里,利用implode()這個函數(shù)的功能,將數(shù)據(jù)整理好了,一起寫入文本文件中 */
/* 這樣,對服務(wù)器的I/O占用就降到了最低點
$data=implode(\"\",$counterData);
/* 打開文本文件,將數(shù)據(jù)寫入 */
$fp=fopen($counterFile,\"w\");
fputs($fp,$data);
/* 如果需要紀(jì)錄的數(shù)據(jù)不在文本里,標(biāo)志$sign= Flase, 那么就往文本里添加數(shù)據(jù) */
if (!$sign) {fputs($fp,\"\\n\".$GLOBALS[\"REQUEST_URI\"].\"|\".\"1\".\"|\");
print(\"1\");
/* 關(guān)閉數(shù)據(jù)文件 */
fclose($fp);
?>
</body>
</html>

我們已經(jīng)看到了這段程序的工作過程,也都知道了思路,但如果,每個文件里都這樣寫,豈不是太麻煩。
別慌!我們還有PHP提供的強(qiáng)大的require()功能呢! 我們把counter.php寫成函數(shù),使用就方便許多了。那還等什么,下面就是你所要的函數(shù):

counter.inc

以下為引用的內(nèi)容:

<?php
function Counter()
{
  $counterFile=\"/freespace/sucre/public_html/counter.dat\";
  $counterData=file($counterFile);
  $sign=False;
  for($i=0;$i<=count($counterData)-1;$i )
   {
    $varArray=explode(\"|\",$counterData[$i]);
    if ($varArray[0]==$GLOBALS[\"REQUEST_URI\"])
     {
       $varArray[1] ;
       print($varArray[1]);
       $counterData[$i]=implode(\"|\", $varArray);
       $sign=True; break;
     }
   }
  $data=implode(\"\",$counterData);
  $fp=fopen($counterFile,\"w\");
  fputs($fp,$data);
  if (!$sign)
   {
    fputs($fp,\"\\n\".$GLOBALS[\"REQUEST_URI\"].\"|\".\"1\".\"|\");
    print(\"1\");
   }
  fclose($fp);
}
?>

最好的檢驗方法就是“實踐”,好了來看我們怎樣調(diào)用它,先看一個例子:

counterTest.php

以下為引用的內(nèi)容:

<?php
require(\"counter.inc\");
?>
<html>
<head>
<title> 網(wǎng)頁計數(shù)器 終結(jié)版 </title>
</head>
<body>
您是第<? counter();?>位閱讀者
</body>
</html>

您只需在要計數(shù)的HTML文件的文件頭加入require()函數(shù),引入counter()函數(shù)為homepage的一部分。在需要的地方加入<? counter();?>就可以了。

還有幾點要注意的問題:

1、記錄數(shù)據(jù)的文件一定要有“寫”的權(quán)限,一般設(shè)成“666”即可,如果該文件存放在一個子目錄下,則對這個“目錄”也要有“寫”的權(quán)限;

2、我在調(diào)試過程中遇到這樣一個問題,我將counter.inc和counter.dat放在一個子目錄include下面,然后在不同的子目錄下面用require()函數(shù)進(jìn)行調(diào)用,格式如下:

以下為引用的內(nèi)容:

<?php
require(“../include/counter.inc”)
?>

可是總是出現(xiàn)“權(quán)限不夠”的錯誤,如有高手請指教。

分享:小結(jié):PHP動態(tài)網(wǎng)頁程序兩個有用的小技巧
主要是在開發(fā)或?qū)W習(xí)中的一些經(jīng)驗技巧進(jìn)行總結(jié),主要就是把解決某種事情更好的方法告訴大家。 1、假如你使用echo輸出一個簡單的語句,類似與: 以下為

來源:模板無憂//所屬分類:PHP教程/更新時間:2008-08-22
相關(guān)PHP教程