2006年02月10日
フリーフォント + MySQL アクセスカウンタ(dbcounter)
- lightbox
- 04:10
- トラックバックする
- カテゴリー:フリーフォント dbcounter
サンプル ->
DB の キャラクタセットが EUC という前提で、SQL も EUC で書いています。
( DB の キャラクタセットが UTF-8 の場合、PHPソースコードは UTF-8N で保存する必要があります )
( テーブル作成は通常サービスとしてphpMyAdminがあると思いますので、そこで作成します )
dbcounter.sql
CREATE TABLE `カウンタ表示` ( `ページ` varchar( 25 ) , `カウンタ` int, `備考 ` varchar(100) default 0, PRIMARY KEY ( `ページ` ) )dbcounter.txt
; 使用可能なサイトを列挙します http://winofsql.jp http://lightbox.sblo.jp http://infoboard.winofsql.jp http://hp.vector.co.jp http://webase.winofsql.jpdbcounter.php
( 赤い部分がユーザ固有の情報ですので書き換える必要があります )
<? # ********************************************************** # このソースコードは、EUC-JP CR+LF です # ********************************************************** header("Content-type: image/png"); header( "Expires: Wed, 31 May 2000 14:59:58 GMT" ); # ************************************** # ページ ID が無い # ************************************** if ( $_GET['page'] == '' ) { MyImageOut( 'no Target ID' ); exit(); } # ************************************** # フォント情報 # ************************************** $font_path = "../../php/"; $font = "akeleph.ttf"; $Site = FALSE; $file = file( "dbcounter.txt" ); for( $i = 0; $i < count( $file ); $i++ ) { # 改行削除 $target = rtrim( $file[$i] ); # 空行は無視 if ( $target == "" ) { continue; } # コメント文字 if ( substr( $target, 0, 1 ) == ";" ) { continue; } $len = strlen( $target ); $ref = substr( $_SERVER['HTTP_REFERER'], 0, $len ); if ( $target == $ref ) { $Site = TRUE; break; } } # ************************************** # 使用不可 # ************************************** if ( !$Site ) { MyImageOut( 'can\'t use' ); exit(); } $Connect = mysql_connect( "サーバー", "ユーザ", "パスワード" ); mysql_select_db( "データベース", $Connect ); $Query = 'update `カウンタ表示`'; $Query .= ' set `カウンタ` = `カウンタ` + 1'; # ************************************** # リファラをチェックしたい場合 # 以下のコメントを外す # ************************************** #$Query .= ',`備考` = \'' . $_SERVER['HTTP_REFERER'] . '\''; $Query .= ' where `ページ` = \'' . $_GET['page'] . '\''; # ************************************** # 更新実行 # ************************************** mysql_query( $Query, $Connect ); # ************************************** # 更新対象が無ければ行を作成 # ************************************** $UpdateRows = mysql_affected_rows( $Connect ); if ( $UpdateRows == 0 ) { $Query = 'insert into `カウンタ表示`'; $Query .= ' values( \'' . $_GET['page'] . '\', 1, NULL )'; mysql_query( $Query, $Connect ); } # ************************************** # 新しいカウントを取得 # ************************************** $Query = 'select `カウンタ` from `カウンタ表示`'; $Query .= ' where `ページ` = \'' . $_GET['page'] . '\''; $Result = mysql_query( $Query, $Connect ); $Column = mysql_fetch_array( $Result ); $CounterNo = $Column['カウンタ']; mysql_close( $Connect ); # ************************************** # フォーマットを編集 # ************************************** $CounterNo = sprintf( ' %07d', $CounterNo ); # ************************************** # 描画 # ************************************** MyImageOut( $CounterNo ); # ********************************************************** # 画像表示 # 日本語表示が必要な場合は、$OutData を # UTF-8 に変換する必要があります # ********************************************************** function MyImageOut( $OutData ) { $im = imagecreate(115,20); $white = imagecolorallocate($im, 255,255,255); $black = imagecolorallocate($im, 0,0,0); imagettftext( $im, 12, 0, 10, 16, $black, $GLOBALS['font_path'] . $GLOBALS['font'], $OutData ); imagepng($im); imagedestroy($im); } ?>
設置方法
( XXXXXXXXXXXXXXXXXXXXXXXXX はアクセスカウントしたいユニークなページIDを指定します。)
( 25バイト以内の英数字 )
<IMG src="http://ドメイン/パス/dbcounter.php?page=XXXXXXXXXXXXXXXXXXXXXXXXX" border="1" >
Trackback on "フリーフォント + MySQL アクセスカウンタ(dbcounter)"
このエントリーのトラックバックURL:
"フリーフォント + MySQL アクセスカウンタ(dbcounter)"へのトラックバックはまだありません。