検索
ホームページphp教程php手册PHP のチュートリアルの例 8。

チュートリアル|アプリケーション例

PHP で独自のカウンターをカスタマイズします
カウンターは、Web 訪問者に Web ページまたは Web サイトの人気指数を知らせる最も直接的な方法であると同時に、訪問者数は広告主への宣伝の最良の基準でもあります。多くの Web サイトでは無料のカウンターが提供されていますが、結局のところ、それらは自分で作成したものではなく、自分の特性を反映することはできません。以下では、PHP 環境でのカウンターの生成プロセスについて詳しく説明します。

訪問者カウンターのプロセスは次のとおりです:

最初のユーザーは特定のページを閲覧します。

サーバープログラムは、ページが閲覧された回数をデータベースまたはファイルから読み取ります。

番号を 1 つずつ保存して、最初のユーザーに送り返します。

次のユーザーがページを表示します。

サーバープログラムは、ページが閲覧された回数をデータベースまたはファイルから読み取ります。

カウントを 1 つずつ保存し、次のユーザーに送り返します。

PHP には直接のカウンター関数はありませんが、その強力な関数を使用すると、自分で簡単にカウンターを作成できます。カウンタの実装は 2 つの段階に分かれています。1 つはカウントを実現する段階、もう 1 つは数値の表示を実現する段階です。カウントを実装するには 2 つの方法があります。1 つはファイルベースのカウントで、もう 1 つはデータベースベースのカウントです。数値の表示方法も 2 つあり、1 つは通常のテキスト表示、もう 1 つはグラフィック表示です。以下、この4つの状況を一つずつ紹介していきます

1. カウンティングの実現

1.ファイルベースのカウント

原則: Web ページにアクセスしたときに、以前の訪問者数をテキスト ファイルに記録し、ファイルを開いて以前の訪問者数を読み取り、1 を追加して最新の訪問者数を取得し、さらに追加します。最新の訪問数は、訪問者数を記録するファイルに書き戻されます。
実装;


$counterFile = "counter.txt";
if (!file_exists($counterFile)) {
//ファイルが存在するか判定
$fp = fopen($counterFile, "w " );
fputs($fp, "0");
fclose($fp);
}
//ファイルを読み取る
$n=10;
$fp = fopen($counterFile, "r");
$ str1 = fgets($fp,$n);
$str1++;
fclose($fp);
//ファイルを書き戻す
$fp = fopen($counterFile, "w");
fputs($fp, $str1 ) ;
fclose($fp);

?>


プログラムの説明: このページを参照すると、PHP プログラムはまず counter.txt ファイルが存在するかどうかを検索し、存在しない場合はカウンターを作成します。 .txt ファイルを作成し、ファイルに 0 を書き込みます。次に、counter.txt ファイルの内容を読み取り、読み取った数値に 1 を加えて、ファイルに書き戻します。

2. データベースベースのカウント

原則: Web ページにアクセスしたときに、データベースから以前の訪問者数を読み取り、1 を加算して最新の訪問者数を取得します。最新の訪問者数を追加します。アクセス数がデータベースに書き戻されます。

実装: データベースが XinXiKu という名前の MySQL データベースであると仮定します。まず、テーブル フィールドに、訪問者数を記録するフィールド カウンターが 1 つだけあります。


//データを接続します
$db=mysql_connect("localhost","root","");
mysql_select_db("XinXiKu",$db);
//訪問者数を更新します
$result =mysql_query("update count set counter=counter+1",$db);

?>


プログラムの説明: 訪問者がこのページを参照すると、まずデータベースに接続し、元の値を使用します。 count フィールド 値に 1 を加算して更新操作を実行し、アクセス数を増やします。

2. カウントの表示

1. 通常のテキストモードでの表示

この表示方法は非常に簡単で、カウントを表示する必要がある場所に直接出力するだけです。上記の例をそれぞれ説明します:

ファイルのカウントに基づいて、変数 str1 の内容を直接出力するだけです。
データベース数に基づいて、最初にデータベースから読み取り、次に出力します。


//データベースをクエリします
$sql="select * from count";
$result=mysql_query($sql,$db);
//レコードセットを取得します
$record=mysql_fetch_array( $result );
//訪問者数を取得します
$str1=$record["counter"];
echo $str1;

?>


同様に、 出力数値が変更されます。テキスト表示の利点は、ダウンロード時間が短縮され、閲覧速度が速いことです。欠点は、表示方法が十分に活発ではないことです。

2. グラフィック表示

原則: 読み込んだアクセスデータを標準形式に整形し、PHP が提供する画像処理機能を使用して数値を画像形式に出力します。このようにして、数値の表示形式を自由に制御でき、数値の特性を忠実に反映できます。

実装:


Header("Content-type: image/gif");
//出力を画像タイプとして定義します
$n=10;
//変数 $n は表示数です数字

/ /上記のメソッドで訪問者数を取得し、変数$str1に代入します(プログラムは省略します)
$str1=訪問者数の値を取得
$str2 = "";
/ / $n 桁が足りない場合は、前に 0 を追加します
$len1 = strlen($str1);
for ($i=1;$i$str2 = "0".$str2;
};
//$n ビットを取得 0
$len2 = strlen($str2);
//訪問者の桁数を計算します
$dif = $len2 - $len1;
$rest = substr($str2, 0, $dif);
$string = $rest.$str1;
//数値桁数 if $n 桁が足りない場合は、前に 0 を追加します
for ($i=0;$i$str[$i]=substr($string, $i,1);
};
//各桁を配列に格納
$font = 4;
//フォントサイズを定義
$im = imagecreate($n*11-1,16);
//新しい画像を作成します
$black = ImageColorAllocate( $im, 0,0,0);
$white = ImageColorAllocate($im, 255,255,255);
//色を定義します
imagefill($im, 0,0,$black );
//カウンターの背景色を黒に設定します
ImageString($im,$font,1,0,$str[0],$white);
for ($i=1;$iimageline($im, $i*11-1,0,$i*11-1,16, $white);
ImageString($im,$font,$i*11+ 1,0,$str[$i],$white);
};
//画像に各ビットを書き込み、縦線で区切る
ImageGif($im);
//画像出力
ImageDestroy($im );
//画像を削除します
? >


出力グラフィックは図に示すとおりです:


関数の説明:

imagecreate(int x_size, int y_size): 完全に空のグラフィックを作成します。パラメータ x_size と y_size はグラフィックのサイズ (ピクセル単位) です。

imagecolorallocate(int im, int red, int green, int blue): 他の描画関数で使用するグラフィックの色を一致させるために使用されます。パラメータ im はグラフィックのハンドルを表します。パラメータの赤、緑、青は三原色であり、その値の範囲は 0 ~ 255 です。

imagefill(int im, int x, int y, intcol): 画像の座標 (x, y) が位置する領域に色を付けます。パラメータcolは、ペイントされる色を表します。

imagestring(int im, int font, int x, int y, string s, intcol): 画像上に水平方向の文字列を描画します。パラメータ font はフォントであり、1 ~ 5 に設定するとデフォルトのフォントを使用することを意味します。パラメータ x と y は、文字列の開始点の座標です。文字列の内容はパラメータに配置されます。パラメータcolは文字列の色を表します。

imageline(int im, int x1, int y1, int x2, int y2, intcol): グラフ上に実線を描きます。グラフの左上隅を原点 (0,0) として、x1、y1 から x2、y2 に接続します。パラメータcolは実線の色です。

imagegif(int im, string [filename]): GIF 形式のグラフィックを作成します。パラメータ im は、ImageCreate() を使用して作成された画像コードです。

imagedestroy(int im): 画像ハンドルを分解し、メモリ空間に解放します。

3. 結論

1. 上記のコードがファイルヘッダーに直接配置されている場合、誰かがそのページにアクセスしている限り、Web サイトの他のページからこのページにジャンプしているかどうかにかかわらず、カウント値は1 ずつ増加すると、ホームページのカウントの信頼性が失われます。この問題を解決するには、非常に簡単な方法が 2 つあります。


a. リンク上のパラメーター フラグをページに渡します (例:index.php?flag=1)。カウントする前に、まずフラグ変数に値が割り当てられているかどうかを確認します。割り当てられていない場合は、カウンターが増加します。 1までに。それ以外の場合は追加しないでください。

if(empty($flag)){
$counter+=1;
}

b. カウントする前に、フラグに値が割り当てられているかどうかを確認します。割り当てられていない場合は、カウントが行われます。 1 をインクリメントし、フラグに値を割り当てます。それ以外の場合、カウンターは変更されません。

if (!isset($flag))
{
//カウンタに1を加算する文の処理
...
//フラグの割り当て
session_start();
session_register("flag");
$flag =1 ;
}


2. 便宜上、カウンターを関数 MyCounter() として使用できるため、ホームページの先頭に require("filename") を追加するだけで MyCounter() になります。必要に応じて、カウンターが必要な場所に を追加して表示します。

3. グラフィックを使用してカウンターを表示する場合は、必要な場所に PHP のチュートリアルの例 8。 を直接挿入します。ただし、PHP の画像処理機能を使用するには、PHP に GD ライブラリがインストールされている必要があることに注意してください。




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

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

PHP中int类型转换为字节的方法详解PHP中int类型转换为字节的方法详解Mar 06, 2024 pm 06:18 PM

PHP中int类型转换为字节的方法详解在PHP中,我们经常需要将整数类型(int)转换为字节(Byte)类型,比如在处理网络数据传输、文件处理或者加密算法等场景中。本文将详细介绍如何将int类型转换为字节类型,以及提供具体的代码示例。1.int类型与字节的关系在计算机领域,基本数据类型int表示整数,而字节(Byte)是计算机存储单位,通常是8位二进制数据

C++程序将double类型的变量转换为int类型C++程序将double类型的变量转换为int类型Aug 25, 2023 pm 08:25 PM

在C++中,int类型的变量只能保存正整数或负整数值;它们不能保存小数值。有float和double值可用于此目的。为了存储小数点后最多七位的小数,创建了双精度数据类型。整数到双精度数据类型的转换可以由编译器自动完成(称为“隐式”转换),也可以由程序员向编译器显式请求(称为“显式”转换)。在接下来的部分中,我们将介绍各种转换方法。隐式转换编译器自动执行隐式类型转换。要实现这一点,需要两个变量——一个是浮点类型,另一个是整数类型。当我们简单地将浮点值或变量分配给整数变量时,编译器将处理所有其他事情

php怎么设置implode没有分隔符php怎么设置implode没有分隔符Apr 18, 2022 pm 05:39 PM

在PHP中,可以利用implode()函数的第一个参数来设置没有分隔符,该函数的第一个参数用于规定数组元素之间放置的内容,默认是空字符串,也可将第一个参数设置为空,语法为“implode(数组)”或者“implode("",数组)”。

php怎么判断有没有小数点php怎么判断有没有小数点Apr 20, 2022 pm 08:12 PM

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

int32的取值范围是多少int32的取值范围是多少Aug 11, 2023 pm 02:53 PM

int32的取值范围是从-2的31次方到2的31次方减1,即-2147483648到2147483647。int32是有符号的整数类型,意味着它可以表示正数、负数和零,它使用1位来表示符号位,而剩余的31位用来表示数值。由于一位被用来表示符号位,所以int32的有效位数是31位。

int占几个字节int占几个字节Jan 22, 2024 pm 03:14 PM

int类型在不同编程语言和不同硬件平台下所占用的字节数可能会有所不同。详细介绍:1、在C语言中,int类型通常占用2个字节或4个字节。在32位系统中,int类型占用4个字节,而在16位系统中,int类型占用2个字节。在64位系统中,int类型可能占用8个字节;2、在Java中,int类型通常占用4个字节,而在Python中,int类型没有字节数限制,可以自动调整等等。

php怎么去除首位数字php怎么去除首位数字Apr 20, 2022 pm 03:23 PM

去除方法:1、使用substr_replace()函数将首位数字替换为空字符串即可,语法“substr_replace($num,"",0,1)”;2、用substr截取从第二位数字开始的全部字符即可,语法“substr($num,1)”。

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 など) をサポートします。

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

EditPlus 中国語クラック版

EditPlus 中国語クラック版

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

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。