検索

计数器详细设计_PHP

Jun 01, 2016 pm 12:27 PM
connectipカウントカウンターデザインアクセス詳しいページ

计数器

概述:
此设计可以在本计数器基础之上设计计数分析程序,可以对页面访问、ip访问次数进行分析,并形成报表。
一、数据库设计
数据库采用mysql
相关文件: createDatabase.sql 创建数据库
createTblCounter.sql 创建计数器表


表名:tpCounter(table of pages counter)
字段:
名称 类型 意义
id Int (10) auto_increment 序列号
pagename varchar(20) 页面标识,缺省为页面文件名
count Int(10) 计数值

表名:tiCounter(table of ip counter)
字段:
名称 类型 意义
id Int(10) auto_increment 序列号
ip varchar(20) Ip标识
count Int(10) 该ip访问次数
date datetime 最近访问时间
pages text 曾访问过的页面id,用’|’分隔

二、详细说明:
1、 可以对每个页面进行计数,也可以统计每个ip访问的次数,最近访问时间,以及每次访问的页面,需要两个表;
2、 统计网站访问人次:tpCounter中设置一个站标识[建议用pagename=’0’标志];
3、 每次打开页面时都先检查session,若不存在该用户的session,说明是刚刚开始访问本网站,此时创建一个此用户的session,对网站计数增1,对所访问页面计数增1;[打开或刷新页面时]如果该用户session已存在,网站计数值不增加,但是页面计数值每刷新一次都要增1;
4、 关闭页面时,检查该用户打开本网站页面数是否为0,是则销毁该用户的session,否则不销毁;[此功能不需编写程序,服务器自动执行]
5、 在访问时如果页面在tpCounter中没有标识,自动在表中插入一条记录;
6、 pages是一个文本类型,记录了浏览者访问的时间和访问的页面,其中包含类似这样格式的字符串:
||2001-5-1 16:00:00|1|12|5||2001-8-3 10:12:5|4|9|
表示此ip在2001-5-1 16:00:00访问了1、12、5页面,在2001-8-3 10:12:5访问了5、4、9页面[页面的号从上一个表中获得];
7、 设计计数的文件(.php),每一个页面都包含这个文件,这个文件中包含以下的功能:
1>session检查,
2>连接数据库,
3>计数[参数为 页面名称、ip、当前时间],
4>读写数据库,
5>断开与数据库的连接;
8、对所访问的页面的记录采用如下方式:
用户打开一个新的页面时,如果用户session不存在,写入时间并记录当前页面,若存在,写入当前页面。写入采用附加的方式。
9、 网站计数在此头文件中,对页面计数在所计页面中。
10、每一个页面在包含本文件时,如果要对页面计数,一定要在包含之前使用变量$page_name,并赋值为页面的名称,页面名称不能有重复。

三、接口描述:
相关文件:counter.php

1/Boolean check_session()
功能描述:session检查,原来存在返回true;原来不存在返回false,并创建,并注册布尔型变量existing
入口参数:无
出口参数:布尔型
2/site_count($content)
功能描述:网站访问计数
入口参数:数据库连接
出口参数:计数值

3/page_count($connect,$page_name,$flag=true)
功能描述:网页计数,返回页面访问次数,整型,$flag是是否增加计数的标志,缺省true
入口参数:$connect:数据库连接,$page_name:网页名称
出口参数:页面访问次数


4/show_site_count(int type)
功能描述:显示计数
入口参数: type==1采用图形计数
type==2采用文本计数

四、流程
0/检查进入页面的权限
由于头文件需要通过引用才可以编译,因此必须检查是通过引用还是直接浏览
1/链接数据库
2/检查session,若不存在,创建session,进行网站计数
3/显示计数
4/进行页面计数
5/断开与数据库的连接[自动实现]

五、使用方法
所有的函数都包含在一个头文件中,在使用时,包含此头文件即可。
六、附源程序
/** counter.php v1.0
* by Amio 2001-5-1
* 描述:计数器文件,可以对整个网站计数,
* 可以对所有页面计数,可以对每个ip计数
*/
/** 接口实现功能:
* 1>session 检查
* 2>连接数据库
* 3>计数
* 4>读写数据库
* 5>链接部分的表格输出
*/
/** 使用方法:
* 此文件必须是包含在其他的php文件之中使用,
* 在引用之前需要对$inc变量进行配置
* e.g.:
* * $inc="inc";
* include("include.php");
*
* ?>
*/
?>
//session检查,返回布尔型
//true--此用户session存在
//false--此用户session不存在
function check_session(){
$existing=true;
session_start();
if (!session_is_registered("existing")){
session_register("existing");
return false;
} else return true;
}


//网页计数,返回页面访问次数,整型
//$flag是是否增加计数的标志,缺省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) or die("invalid page query!");
if (!(mysql_num_rows($query))){
mysql_query("insert into tpcounter (pagename,count) values('$page_name',1)",$connect)or die("insert page failed");
$pidquery=@mysql_query("select id from tpcounter where pagename='$page_name'",$connect) or die ("select page id failed");
$pidarray=mysql_fetch_array($pidquery);
$pid=$pidarray[id];
$return_num=1;
}else {
$array=mysql_fetch_array($query);
$num=$array[count];
$pid=$array[id];
if ($flag)
$num ;
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 ("invalid pages query!");
if (($flag)&&(mysql_num_rows($pquery))){
$parray=mysql_fetch_array($pquery);
$ps="$parray[pages]";
$pstr="$parray[pages]"."$pid"."|";
mysql_query("update ticounter set pages='$pstr' where ip='$ip'",$connect)or die ("update ip failed");
}
return $return_num;
}

//ip计数,返回ip访问次数,整型
//功能除了计数还有时间更新
//$flag是是否增加计数的标志,缺省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 ("invalid ip query!");

if (!(mysql_num_rows($ipquery))){//新的ip
$pageStr="|"."$visit_pages";
mysql_query("insert into ticounter (ip,count,date,pages) values ('$ip',1,'$visit_time','$pageStr')",$connect)or die("insert ip failed");
return 1;
}else{ //旧的ip
$parray=mysql_fetch_array($ipquery);
$ipnum=$parray[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;
}

}

//网站计数,返回整型,网站访问次数
function site_count($connect){
if (!check_session()){ //session不存在
$ipnum=ip_count($connect);
$num=page_count($connect,"website",true);
}else{ //session存在
$num=page_count($connect,"website",false);
}
return $num;
}

function 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 $outStr="0"."$outStr";
}
switch ($type){
case 1:
echo " echo displayCount($outStr);
echo "\">";
break;
case 2:
default:
echo "$outStr";
}
}
?>

if (!isset($inc))exit;
$connect=mysql_connect('localhost','root','');//connect to server
mysql_select_db("damio",$connect); //select database ,database name is damio

$sitecount=site_count($connect);
if (isset($page_name))
page_count($connect,$page_name);
?>
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPの現在のステータス:Web開発動向を見てくださいPHPの現在のステータス:Web開発動向を見てくださいApr 13, 2025 am 12:20 AM

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHP対その他の言語:比較PHP対その他の言語:比較Apr 13, 2025 am 12:19 AM

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHP対Python:コア機能と機能PHP対Python:コア機能と機能Apr 13, 2025 am 12:16 AM

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

PHP:Web開発の重要な言語PHP:Web開発の重要な言語Apr 13, 2025 am 12:08 AM

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHP:多くのウェブサイトの基礎PHP:多くのウェブサイトの基礎Apr 13, 2025 am 12:07 AM

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

誇大広告を超えて:今日のPHPの役割の評価誇大広告を超えて:今日のPHPの役割の評価Apr 12, 2025 am 12:17 AM

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。

PHPの弱い参照は何ですか、そしていつ有用ですか?PHPの弱い参照は何ですか、そしていつ有用ですか?Apr 12, 2025 am 12:13 AM

PHPでは、弱い参照クラスを通じて弱い参照が実装され、ガベージコレクターがオブジェクトの回収を妨げません。弱い参照は、キャッシュシステムやイベントリスナーなどのシナリオに適しています。オブジェクトの生存を保証することはできず、ごみ収集が遅れる可能性があることに注意する必要があります。

PHPで__invoke Magicメソッドを説明してください。PHPで__invoke Magicメソッドを説明してください。Apr 12, 2025 am 12:07 AM

\ _ \ _ Invokeメソッドを使用すると、オブジェクトを関数のように呼び出すことができます。 1。オブジェクトを呼び出すことができるように\ _ \ _呼び出しメソッドを定義します。 2。$ obj(...)構文を使用すると、PHPは\ _ \ _ Invokeメソッドを実行します。 3。ロギングや計算機、コードの柔軟性の向上、読みやすさなどのシナリオに適しています。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール