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

首頁 > 開發 > PHP > 正文

網頁實例:詳細介紹用PHP來編寫網頁記數器

2024-05-04 23:03:19
字體:
來源:轉載
供稿:網友

  本款計數器用文本計數,沒有用到數據庫,可以實現如下功能:

  利用一個文本文件實現多個頁的計數減少服務器的i/o占用率在需要紀錄的文件里,只需加入很少的幾行代碼

  基本思路如下:

  服務器程序從文本文件中讀取該頁被瀏覽的次數,(因為所有文件向服務器提出請求時,他們的環境變量request_uri都代表他來自于何處... ...,所以,以請求文件的環境變量request_uri來辨別到底是那一頁正被瀏覽。),將這個次數加一儲存,并在調用這頁的用戶的計算機上顯示出來。
請先看我的數據文本中紀錄的數據樣本,(紅色為瀏覽次數,其前面為相應的被瀏覽的文件)

counter.php

<html>
<head>
<title>計數器</title>
<head> 
<body>
<?php
/* 定義儲存數據的文本文件 */
$counterfile="counter.dat/";
/* 定義一個標記,用來辨別現在需紀錄的數據是否已經文本數據中 */
$sign=false;
/* 將數據以數組的方式讀入變量 $sounterdata 備用, */
$counterdata=file($counterfile); 
/* 用count()函數計算共有多少個紀錄 */
/* 用explode()函數把$counterdata[$i]按符號/"|/"分開,并以數組的方式送回到變量$vararray里 */
/* 函數implode()與explode()剛剛相反,把數組$vararray以符號/"|/"連接起來送回到$counterdata */
/* 還利用了環境變量$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;
    /* 找到本紀錄所在的位置后, 用break 退出循環 */  
    break;
   } 
 }
/* 在這里,利用implode()這個函數的功能,將數據整理好了,一起寫入文本文件中 */
/* 這樣,對服務器的i/o占用就降到了最低點
$data=implode(/"/",$counterdata);
/* 打開文本文件,將數據寫入 */
$fp=fopen($counterfile,/"w/");
fputs($fp,$data); 
/* 如果需要紀錄的數據不在文本里,標志$sign= flase, 那么就往文本里添加數據 */ 
if (!$sign) {fputs($fp,/"print(/"1/");
/* 關閉數據文件 */
fclose($fp);
?>
</body>
</html> 

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

<?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,/"
    print(/"1/");
   } 
  fclose($fp);

?> 

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

countertest.php

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

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

還有幾點要注意的問題:

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

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

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

可是總是出現“權限不夠”的錯誤,如有高手請指教。



收集最實用的網頁特效代碼!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 孝义市| 海南省| 高清| 清水县| 喀什市| 丹江口市| 七台河市| 富源县| 洪雅县| 临漳县| 永福县| 拜城县| 资中县| 隆子县| 区。| 台江县| 金溪县| 商都县| 随州市| 肇州县| 雅安市| 白沙| 朝阳市| 浏阳市| 漾濞| 恭城| 砀山县| 临安市| 绍兴县| 镇平县| 湛江市| 布拖县| 彭山县| 奉贤区| 乌鲁木齐市| 弥渡县| 红桥区| 丹阳市| 广丰县| 济源市| 民丰县|