チュートリアル|アプリケーション例
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<=$n;$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<=$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 );
//画像を削除します
? >
出力グラフィックは図に示すとおりです:
関数の説明:
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 の画像処理機能を使用するには、PHP に GD ライブラリがインストールされている必要があることに注意してください。