詳しい説明
カウンタは、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");
fclose($fp); /Read File
$n=10;
$fp = fopen($counterFile, "r");
$str1++; >fclose ($fp);
//ファイルを書き戻す
$fp = fopen($counterFile, "w"); );
?>
プログラムの説明: このページを参照すると、PHP プログラムはまず counter.txt ファイルが存在するかどうかを検索します。 counter.txt ファイルを作成し、そのファイルに 0 を書き込みます。次に、counter.txt ファイルの内容を読み取り、読み取った数値に 1 を加えて、ファイルに書き戻します。
2. データベースベースのカウント
原則: Web ページにアクセスしたときに、データベースから以前の訪問者数を読み取り、1 を加算します。最新の訪問者数を取得し、最新の訪問者数をデータベースに書き込みます。
実装: データベースが XinXiKu という名前の Mysql データベースであると仮定します。まず、テーブル フィールドにカウンターのフィールドが 1 つだけ作成され、デフォルト値は 0 です。 。
//データを接続します
$db=mysql_connect("localhost","root","");
mysql_select_db("XinXiKu",$) db);
//訪問者数を更新します
$result=mysql_query("update count set counter=counter+1",$db);
<🎜; >
プログラムの説明: 訪問者がこのページを参照すると、まずデータベースに接続し、元の値に 1 を加えてカウント フィールドを更新し、訪問数を増やします。
2. カウントの表示
1. 通常のテキスト表示
この表示方法は非常に簡単で、カウントを表示する必要がある場所に直接出力するだけです。上記の例で説明します。
ファイルのカウントに基づいて、変数 str1 の内容を直接出力するだけです。
データベース数に基づいて、最初にデータベースから読み取り、次に出力します。
//データベースをクエリ
$sql="select * from count";
$result=mysql_query($sql,$db); >//レコードセットを取得します
$record=mysql_fetch_array($result);
//訪問者数を取得します
$str1=$record["counter"];
echo $str1;
?>
同様に、 のような HTML ステートメントを使用して出力数値を変更することもできます。テキスト表示の利点は、ダウンロード時間が短縮され、閲覧速度が速いことです。欠点は、表示方法が十分に活発ではないことです。
2. グラフィック表示
原理: 読み込んだアクセスデータを標準形式に整形し、PHP が提供する画像処理機能を使用して数値を画像形式に出力します。このように、数値の表示形式を自由に制御でき、数値の特性を忠実に反映できます。
実装:
Header("Content-type: image/gif");
// 出力を画像タイプとして定義します
$n= 10 ;
//変数$nは表示桁数
//上記の方法で訪問者数を取得し、変数$str1に代入する(手順は省略)
$str1=訪問者数の値を取得します
$str2 = ""
//$n 桁が足りない場合は、先頭に 0 を追加します
$len1 = strlen($str1); ;
for ($i=1;$i<;=$n;$i++) {
$str2 = "0".$str2;
};
$len2 = strlen($str2);// 訪問者数を計算します
$dif = $len2 - $len1
$rest = substr($str2, 0, $dif); >//$n 桁が足りない場合は、先頭に 0 を追加します。
for ($i=0;$i<=$n-1;$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;$i<=$n-1;$i++) {
imageline($im, $i*11-1, 0, $i*11-1,16, $white);
ImageString($im,$font,$i*11+1,0,$str[$i],$white); ;
//画像に各ビットを書き込み、縦線で区切ります
ImageGif($im)
//画像出力
ImageDestroy($im); image Like
?>
出力グラフィックは次の図に示すようになります。
関数の説明:
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. 上記のコードがファイルヘッダーに直接配置されている場合、誰かがページを更新しているか、他のページからこのページに移動しているかどうかに関係なく、カウントを 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() として使用できます。必要に応じて、MyCounter();?> をホームページの先頭に追加する必要があります。が必要です。
3. グラフィックを使用してカウンターを表示する場合は、必要な場所に を直接挿入します。ただし、PHP の画像処理機能を使用するには、PHP に GD ライブラリがインストールされている必要があることに注意してください。