ホームページ  >  記事  >  php教程  >  カウンター詳細設計

カウンター詳細設計

WBOY
WBOYオリジナル
2016-06-21 09:03:541131ブラウズ
概要:
この設計では、このカウンターに基づいてカウント分析プログラムを設計でき、ページ訪問数と IP 訪問数を分析し、レポートを作成できます。
1. データベース設計
データベースは mysql を使用します
関連ファイル: createDatabase.sql データベースの作成
createTblCounter.sql カウンター テーブルの作成


テーブル名: tpCounter (ページ カウンタ)
フィールド:
名前 タイプ 意味
id Int (10) auto_increment シリアル番号
pagename varchar(20) ページ識別、デフォルトはページ ファイル名です
count Int(10)カウント値

テーブル名: tiCounter (IP カウンタのテーブル)
フィールド:
名前 型 意味
id Int(10) auto_increment シリアル番号
ip varchar(20) IP 識別
count Int(10) IP がアクセスされた回数
date datetime 最新のアクセス時刻
pages text '|' で区切られたアクセスされたページ ID

2. 詳細な説明:
1. 各ページをカウントすることも、各 IP へのアクセス数、最新のアクセス時間、および毎回アクセスされるページをカウントすることもできます。
2 つのテーブルが必要です。 2. Web サイトの訪問者数をカウントします。 tpCounter サイト ID に 1 を設定します [pagename='0' フラグを使用することをお勧めします]。
3. ユーザーのセッションが存在する場合は、セッションを確認します。存在しない場合は、この時点でユーザーを作成し、Web サイトの数が 1 増加し、訪問したページの数が 1 増加します (ページを開くか更新するとき)。セッションがすでに存在する場合、Web サイトのカウント値は増加しませんが、ページが更新されるたびにページ数の値は 1 ずつ増加します。
4. ページを閉じるときに、ユーザーがこの Web サイトで開いたページの数が増えているかどうかを確認します。 0. その場合、ユーザーのセッションを破棄します。そうでない場合は、破棄されません。[この機能はプログラムを作成する必要がなく、サーバーが自動的に実行します]
5. 訪問中にページが tpCounter で識別されなかった場合、レコードは自動的にテーブルに挿入されます。
6. Pages は、閲覧者が訪問した時刻とページを記録するテキスト タイプで、次のような形式の文字列が含まれます。 5-1 16:00:00|1|12|5||2001-8-3 10:12:5|4|9|
は、この IP が 2001-5-1 にあることを意味します 1、12 ページを訪問しました、16:00:00 に 5、2001-8-3 10:12:5 にページ 5、4、および 9 にアクセスしました [ページ番号は前の表から取得されます]
7、カウントを設計します。各ページにはこのファイルが含まれています。このファイルには次の機能が含まれています:
1> セッション チェック、
2> データベースへの接続、
3> カウント [パラメータはページ名、IP] 、現在時刻]、
4> データベースの読み取りと書き込み、
8. アクセスしたページは次の方法で記録されます。ユーザーセッションが存在しない場合は時間を書き込み、存在する場合は現在のページを記録します。書き込みは追記方式で行われます。
9. Web サイト数はこのヘッダー ファイルに含まれ、ページ数はカウントされたページに含まれます。
10. 各ページにこのファイルが含まれる場合、ページ数をカウントしたい場合は、変数 $page_name を使用してページ名に割り当てる必要があります。ページ名を繰り返すことはできません。

3. インターフェースの説明:
関連ファイル: counter.php

1/Boolean check_session()
関数の説明: セッションチェック、存在する場合は true を返します。 false は存在しません。存在するブール変数を作成して登録します。
入力パラメータ: なし
終了パラメータ: ブール値
2/site_count($content)
関数の説明: Web サイト訪問数
入力パラメータ: データベース接続
終了パラメータ: カウント値

3/page_count($connect,$page_name,$flag=true)
関数の説明: Web ページの数、ページ数を返すVisits, integer, $ flag はカウントを増やすかどうかを示すフラグで、デフォルトは true
エントリパラメータ: $connect: データベース接続、$page_name: Web ページ名
終了パラメータ: ページ訪問数


4/show_site_count(int type)
関数の説明: カウントを表示
エントリ パラメーター: type==1 はグラフィックのカウントを使用します
type==2 はテキストのカウントを使用します

プロセス
0/ページへのアクセス許可を確認します
ヘッダーファイルは参照によってコンパイルされる必要があるため、参照によって渡されているか、直接参照されているかを確認する必要があります
1/データベースへのリンク
2/セッションを確認し、存在しない場合はセッションを作成します。 Web サイト数
3/表示数
4/ページ数
5/データベースから切断 [自動実装]

5 . 使い方
すべての機能 使用する場合は、このヘッダファイルをインクルードするだけです。
6.添付ソースプログラム
/**counter.php v1.0
* by Amio 2001-5-1
* 説明: カウンター ファイル、Web サイト全体をカウントできます、
* すべてのページをカウントでき、各 IP をカウントできます
*/
/**インターフェース実装関数:
* 1> セッションチェック
* 2> データベースへの接続
* 3> カウント
* 4> データベースの読み書き
* 5> リンク部のテーブル出力
*/
/**使用法:
* このファイルは他の PHP ファイルに含める必要があります。
* 引用する前に $inc 変数を設定する必要があります。 例:
* * $inc ="inc"; * include("include.php");
*
* ?>*/
?>
//セッションチェック、ブール値を返す
//true -- このユーザーセッションが存在します//false -- このユーザーセッションが存在しません
function check_session (){
$existing=true;
if (!session_is_registered("existing")){
session_register("existing"); > } else return true; >function page_count($connect,$page_name,$flag=true){
$ip = getenv("REMOTE_ADDR");
$query=@mysql_query("select id,count from tpcounter where pagename='$ page_name'",$connect) または die("無効なページ クエリです!");
if (!(mysql_num_rows($query))){
mysql_query("insert into tpcounter (pagename ,count)values(' $page_name',1)",$connect)or die("ページの挿入に失敗しました");
$pidquery=@mysql_query("select id from tpcounter where pagename='$page_name'", $connect) または die ( "ページ ID の選択に失敗しました");
$pid=$pidarray[id]; > $ array=mysql_fetch_array($query);
mysql_query ("update tpcounter set count=$num where pagename='$page_name'",$connect)or die("update page failed");
$return_num=$num; 🎜> $pquery= @mysql_query("select Pages from ticounter where ip='$ip'",$connect) or die ("無効なページクエリ!");
if (($flag)&&(mysql_num_rows($) pquery))){
$parray=mysql_fetch_array($pquery);
$ps="$parray[ページ]"
$pstr="$parray[ページ]"."$pid"; "|";mysql_query("update ticounter set pages='$pstr' where ip='$ip'",$connect)or die ("update ip failed");
}
return $return_num; 🎜>
//IP カウント、IP アクセス数を返す、整数型
//カウントに加えて、時刻更新機能もあります
//$flag は、IP アクセス数を増やすかどうかのフラグですcount、デフォルトは true
/ /注意: ip_count の呼び出しは page_count より前に行う必要があります!!!
function ip_count($connect){

$ip = getenv("REMOTE_ADDR");

$visit_time=date( "Y:m:d:H:i");
$visit_pages="||"."$visit_time"."|"
$ipquery= @mysql_query("select count,pages from ticounter where ip='$ip'",$connect) or die ("無効な IP クエリ!"); (!(mysql_num_rows($ipquery))) {//新しい ip
$pageStr ="|"."$visit_pages"("ticounter (ip,count,date,pages) 値に挿入 ('$ip',1,'$visit_time'; ,'$pageStr')",$ connect)or die("ip の挿入に失敗しました");
return 1;
}else{ //古い ip
$parray=mysql_fetch_array($ipquery);
$ipnum=$par ray[count];
$pageStr="$parray[pages]"."$visit_pages";
$ipnum++
mysql_query("update ticounter set count=$ipnum ,date='$visit_time',pages ='$pageStr' where ip='$ip'",$connect)or die("update ip failed");
return $ipnum; >//サイト数, return整数、Web サイト訪問数
function site_count($connect){
if (!check_session()){ //セッションが存在しません
$ipnum=ip_count($connect) ; =page_count($connect,"website",true);
}else{ //セッションが存在します
$num=page_count($connect,"website",false);
}
return $ num;
}

関数 displayCount($num){
$fileurl="countpng.php?count=".$num;
return $fileurl; >
//表示カウント値、type は表示タイプ、length は表示される長さ、デフォルト 6
//type=1 グラフィック形式
//type=2 テキスト形式 (デフォルト)
function show_site_count($num,$length=6,$type=2){

$outStr=strval($num)
for ($i=strlen($ outStr)+1;$i< ;=$length;$i++){

echo " echo "">";
Break;
ケース 2:
デフォルト:
echo "$outStr";
}
}
?>

if (!isset($inc))exit; connect=mysql_connect('localhost','root', '');//サーバーに接続します
mysql_select_db("damio",$connect); //データベースを選択します、データベース名は damio

$ sitecount=site_count($connect);
if (isset($page_name))
page_count($connect,$page_name)

;





声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。