アクセスカウンタ


別サイトで使っているアクセスカウンタなんですが、2つ使っていて何故か同じタイミングで初期化されている事があるんです。
最近はアクセス数なんて全く気にしてないので値が初期化されても問題ないのですが、初期化されるってのが気になるところ。
それ以前に値気にしてないなら外せよって話ですがw
ログやデータが飛ぶといやなので、今の物は使うのを辞めて、ど?せならphpを使ってアクセスカウンタを作ってみよう!と思ってきた。

仕様としてはこんな感じ。
保存するデータ
・カウンタ値
・最後にアクセスのあったIPアドレス
・アクセス時間
保存先
・データベースに値を保存
表示形式
・カウンタ値は5桁表示
・TrueTypeFontを画像に変換する予定

データベースに保存すると言う事で使うSQL文は「SELECT」、「INSERT」、「UPDATE」の3つぐらいかな。
新しくデータを追加していく様な事は無いのでデータ読み出しでSELECT、データ更新でUPDATEだけだと思います。
INSERTは初回データを登録するときに使うぐらいかな?
データベースに初期値を登録しておけばINSERTはいらなさそう。

アクセスされたIPに関しては、$_SERVER[‘REMOTE_ADDR’]、もしくはgetenvで取得出来る。

時刻はtime()でOK。
保存する時刻形式は(yyyy-mm-dd hh:mm:ss)のdatetime形式。

TrueTypeFontを画像に変換するのは初めてのチャレンジ
wp-tegakiプラグインを見た時に「うをっ!うちでも使いたいっ!!!」と思ったのがきっかけでチャレンジしようと思いました。
プラグインの方は何故かうまく動かせてません・・・。
はやく導入したいな?(´・ω・`)
ちなみに画像への変換は、xreaにはGDと言う画像をいじる為の機能がインストールされているのでそちらを使います。

まず画像生成にimagecreate関数を使う。
これで土台となる画像($im)を作成。
$im = imagecreate($size_w , $size_h);
横$size_w、縦$size_hの画像を生成する。

imagecolorallocate関数を使ってRGBで指定する色を、GDで使える値に変換。
$white = imagecolorallocate($im, 255, 255, 255);
白色が使えるようになる。

imagefilledrectangle($im , 0 , 0 , $size_w , $size_h , $white);
先ほど生成した土台画像($im)にimagefilledrectangleで白い色をつける。

imagettftextで土台画像にテキストを追加する。
imagettftext($im, フォントサイズ, 角度, X座標, Y座標, テキスト色, フォント, テキスト);

imagepngでpng形式で画像を作成。
第1引数に土台画像($im)、第2引数無しで、ソース中にヘッダのタイプをimage/pngで指定してあれば、png画像を表示。
第1引数に土台画像($im)、第2引数にパスを指定すれば画像をpng形式ファイルとして保存出来る。

最後にimagedestroy関数で取得した土台画像を開放する。
確保したら開放する、メモリの開放は基本ですよね。

と言う感じで早速作って動かしてみたが、エラーが出る。
ヘッダタイプを「header(“Content-type: image/png”);」として実行してるので、本来なら画像が表示されるはずなのに、png->という文字しか出てこない。
そもそも画像作成中に失敗してる可能性もあるのでファイルを作成するようにしてみた所、新しくファイルが作成されて、保存が出来ていた。
なのでスクリプト的には問題ないらしい。
phpのマニュアルサイト見ながらほぼコピペでやったので動かない方がおかしいしよなw

ちょっと調べてみたら、xreaの広告自動挿入が悪さをしているらしく、「x」ディレクトリを作成し、その中で実行してみたところ問題なく画像が表示されるようになった。
・・・wp-tegakiがうまく動かないのもこれが原因ぽ(´・ω・`)

さてどうやって解決すればいいかな?
とりあえずカウンタの方は、別サイトもxrea使ってるのでxディレクトリ作成して動かしてあげれば動作はしそう。
wp-tegakiの方は・・・諦めた方が良いのか?
もうちょっと検討してみますかね。


Leave a Reply