php3で書かれた簡単なカウンター

WBOY
リリース: 2016-06-21 09:03:31
オリジナル
731 人が閲覧しました
php には非常に強力な画像処理機能があり、これを使用して動的に Web 画像を簡単に生成できます。
以下は、php を使用して作成された簡単なカウンターです。

1. 一般的なアイデア:
Web ページにアクセスしたときに、ファイル
を開いて過去の訪問者数を読み出し、1 を加算します。最新の訪問者数を取得し、その数値を
の標準形式にフォーマットし、画像処理関数を呼び出して数値を画像に出力し、新しい訪問者数を
に書き戻して数値を記録します。ファイル内の訪問者の数。

2. プログラムで使用される関数の説明:
A. ファイルを開く:
関数のプロトタイプ: int fopen(string filename, string mode); > 戻り結果: ファイルが正常に開かれた場合、関数はファイル ストリーム ポインタを返し、それ以外の場合は FALSE(0) を返します。
パラメータの説明:
string filename -- 開かれるファイルの名前は文字列形式である必要があります。
例: "zzm.txt"、"..zzm.txt" など。
文字列モード -- ファイルを開く方法は文字形式である必要があります。
'r'、読み取り専用形式、ファイル ポインタはファイルの先頭を指します
'r+'、読み取りおよび書き込み可能、​​ファイル ポインタはファイルの先頭を指します
'w'、書き込み専用形式、ファイル ポインタは先頭のファイルを指し、ファイルの長さを 0 に切り詰めます。
ファイルが存在しない場合は、ファイルの作成が試行されます。
'w+'、読み取りおよび書き込み可能、​​ファイル ポインターはファイルの先頭を指し、ファイルの長さを 0 に切り捨てます。
ファイルが存在しない場合は、ファイルの作成を試みます。
'a'、追加フォーム (書き込みのみ可能)、ファイル ポインターはファイルの末尾を指します。ファイル
が存在しない場合は、ファイルの作成が試行されます。
'a+'、読み取りおよび書き込み可能、​​ファイル ポインターはファイルの末尾を指します。ファイルが存在しない場合、
はファイルの作成を試みます。
例: 現在のディレクトリの下にある「zzm.txt」を読み取り専用モードで開きます
$fp = fopen("zzm.txt", "r");

b. ファイルを閉じます。 :
関数のプロトタイプ: int fclose(int fp);
戻り結果: 成功した場合は 1 が返され、失敗した場合は 0 が返されます
パラメーターの説明: int fp は、fopen 関数によって返されたファイル ストリーム ポインターです。
例: fopen
fclose($fp);

c で開いたばかりの zzm.txt ファイルを閉じます。
関数のプロトタイプ: string fgets(int fp, int length) ; ファイル ストリーム ポインタ、fopen 関数によって返される値
int length -- 読み取られた文字数、実際に読み取られた文字数は length -1 です
例: $fp から 9 文字を読み取ります
$ str1 = fgets($fp,10);

d. ファイルの書き込み:
関数のプロトタイプ: int fputs(int fp, string str, int [length]); 戻り値: と同じfclose
パラメータの説明:
int fp – 情報が書き込まれるファイル ストリーム ポインタ、fopen 関数によって返される値
string str – ファイルに書き込まれる文字列。
int length -- 書き込む長さ (オプション) length が指定されていない場合は、文字列全体が書き込まれます。それ以外の場合は、length 文字が書き込まれます。
例: "0000000001" を $fp
fput($fp, "0000000001");

B. 関連する文字列関数:
a. 文字列の長さを計算します。関数プロトタイプ: int strlen(string str);
戻り結果: 文字列の長さを返します
パラメーターの説明:
String str -- 長さを計算する文字列
例: Calculate"文字列の長さは 000000000" です。
$str2 = "000000000";
$len2 = strlen($str);

b. 文字列の追加: 最も簡単です。a を使用します。2 つの文字列が連結されます。
例: $str1 と $str2 を追加します
$str = $str1.$str2

C. 関連するグラフィック関数:
a. 新しいイメージ:
関数プロトタイプ :int imagecreate (int x_size, int y_size);
戻り結果: X*Y ピクセル サイズの空の画像識別番号 (ImageID) を返します
パラメーターの説明: x_size、y_size はそれぞれ新しい画像の幅と高さです (ピクセル)
例: サイズ 88*31 ピクセルの新しい空の画像を作成します
$ImageID = imagecreate(88, 31);

b. 画像に色を割り当てます。 > 関数プロトタイプ: int imagecolorallocate(int im, int red, int green, int blue);
戻り値: RGB カラー識別番号を画像に返します ($im)
パラメーターの説明: int im 画像識別番号 Int Red、Green、Blue はそれぞれ赤、緑、青の 3 色の重みです。
$white = imagecolorallocate($im, 255, 255, 255);色の付いた画像:
関数のプロトタイプ: int imagefill(int im, int x, int y, int col) ;
戻り値: 成功した場合は 1 を返し、それ以外の場合は 0 を返します
パラメーターの説明: int im,画像の識別番号
> (0,0) は画像の左上隅を表します
intcol、色の識別番号
例: 画像の左上隅から黒で塗りつぶします画像 (つまり、画像全体) (imagecolorallocate 関数
で定義されています。黒の色識別番号は $black です)。
imagefill($im, 0, 0, $black);

d. 画像の幅を計算します:
関数プロトタイプ: int imagex(int 🎜> 戻り値)結果: 画像の幅 (単位はピクセル)
パラメータの説明: int im、画像の識別番号。
例: 画像の幅を計算します $im
$px = imagex($im);

e. 画像内に横書きテキストを書き込みます:
関数プロトタイプ: int imagestring(int im) 、 int font、 int x、 int y、 string s、 intcol)
;
戻り値: 成功した場合は 1 を返し、それ以外の場合は 0 を返します
パラメータの説明: int im、画像識別番号
int フォント、フォント識別番号、組み込みフォント 1 ~ 5、ユーザーは imageloadfont() を使用してフォント自体をロードできます。
int x、int y、フォントの座標の書き込みを開始します。(0 ,0) は次のとおりです。写真の左上隅。
string s、書き込む文字列
int col、フォントの色の識別番号
例: フォント サイズを 3、画像 (3,3) 位置の色を白として書き込みます ( imagecolorallocate( が使用されています) 関数
は黒色の識別番号 $white) を持つ文字列 "E&J Counter" を定義します
ImageString($im, 3, 3, 3, "E&J Counter", $white); >
f. 画像内に直線を描画します:
関数のプロトタイプ: int imageline(int im, int x1, int y1, int x2, int y2, intcol);
戻り値: Return 1成功した場合、そうでない場合は 0 を返します パラメータの説明: int iM、画像認識番号
int x1、int y1、ラインの開始座標
int x2、int y2、スコアリング座標
int color , 線の線 色識別番号
例: 画像 $im
imageline($im, 1, 14, 85、14、$ white);

gはGIF形式に出力します。ファイル名が空の場合、直接?
氖涑?
画像、ヘッダー(" Content-type: image/gif") を使用する必要があります
によって出力されたコンテンツを画像
例: 画像 $im をファイル名「image1.gif」の画像に出力します。
imagegif($im, "image1.gif");

h 画像を解放します。関数プロトタイプ: int imagedestroy(int im);
戻り値: 成功した場合は 1 を返し、それ以外の場合は 0 を返します
パラメーターの説明: int im、解放されるイメージの識別番号。この関数は、識別番号 im のイメージと、イメージによって占有されているシステム リソースを解放します。
例: イメージ $im
imagedestroy($im);

3. このカウンターのインストール方法:
A. システムには PHP インタープリターがインストールされている必要があります。 PHP は http://www.php.net/ からダウンロードできます。このサイトには、閲覧またはダウンロードして読むことができる
詳細な
技術情報も多数あります。 PHP のインストール方法については、独自の手順を参照してください。
B. 次のプログラム リストを拡張子 php のファイルにコピーし、php スクリプトを実行できるディレクトリに置きます。
lv妫?
ディレクトリの下にプレーン テキスト ファイルを作成します。名前はzzm.txtです。このファイルの目的は、以前の
訪問者
の数を記録することです。カウンタの初期値 (5000 など) を事前に設定できます。
C. Web ページでこのカウンタを呼び出す方法は?次の方法で呼び出すことができます:



添付ファイル: 完全なプログラム リスト

$fp = fopen("zzm.txt", "r")
//以前の訪問者数を記録するファイル zzm.txt を開きますform

$str1 = fgets($fp,10);
//このカウンターが記録できる最大訪問者数は 999999999 です。

$str1++ ;
//カウンターを追加しました

fputs($fp, $str1)
//最新の訪問者数をfile

fclose($ fp);
// ファイルを閉じます

/*
以下は、訪問者数が次の場合の形式の出力です。 5000など9桁(4桁)に足りない場合は、
次に訪問者数を000005000の形式に変換して出力します。方法は、訪問者数の桁数を計算し、
000000000 の桁 (9 桁) と比較して桁の差を取得し、対応する 0 を数字の前に追加します
> 。たとえば、5000 の長さは 000000000 とは 5 異なるため、5000 の前に 5 つのゼロを追加する必要があります。
*/
$ len1 = strlen ($ str1);
// 訪問数から訪問数を計算します

$ str2 = "000000000"; > $ len2 = strlen($str);
//カウンタの最大カウント桁数を定義します

$dif = $len2 - $len1
// 2 桁、つまり前の補完される 0 の数

$rest = substr($str2, 0, $dif)
//補完される 0 をインターセプトします

$ string = $rest.$str1 ;
//先頭に0を追加します

$font = 4;
//フォントサイズを定義します

$im = imagecreate(88, 31);
//新しい画像を作成します。

$black = ImageColorAllocate($im, 0,0,0)
// 黒を定義します

$white = ImageColorAllocate($im, 255,255,255 );
//白を定義します

imagefill($im, 0,0,$black)
//カウンターの背景色を黒に設定します>
$px = (imagesx($im) -8.3*strlen($string))/2;
//文字列の長さに応じて、文字列の書き込みが開始される水平座標を計算します。目的は、文字列を水平方向に中央揃えにすることです。

ImageString( $im,3,$px,2,"E&J Counter",$white)
//画像に「E&J Counter」を書き込みます。

imageline($im, 1, 14, 85, 14, $white);
//水平線を描画します

ImageString($im,$font,$px,15.5) ,$string,$white);
//訪問者数を書き込みます
Imagegif ($ im)
// 画像を gif 形式で出力します
ImageDestroy ($ im);
// 画像を解放します
& Gt;







関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート