ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

画像のアクセスカウンタのように見えて、実はアクセスログを取っているCGIの作り方&ソースのありか

2005-12-27 21:30:18 | Weblog

 以前、このブログで企画した、ベリカードの話の仕組みを書こうかとおもったのですが、そんなことはあんまり興味ないとおもうので、そのベリカードのしくみの話をしつつ、今回は、

 一見画像のアクセスカウンタのように見えて、実は、アクセスログを取っている

というCGIをご紹介したいと思います。

 って、そのアクセスカウンタ、ベリカードの番号をだしているところの出力を変えるだけの話なので、ほとんどベリカードの番号の出し方の説明なんですけどね。
 

機能仕様


●IMGタグで、呼び出します。

<IMG SRC="CGIのURL/dispid.cgi?ID=bun051225">

そうすると、こんなかんじにでます。



なお、ここをカウンタ番号だけにすれば、アクセスカウンタになります。

●そして、アクセスカウンタを出すときに、アクセスログ(IPアドレスとホスト名、アクセス日時)をファイルに書き出します。

 アペンドすると、排他がなんだあとか、めんどくさそうなので、

 アクセスカウンタは、1つのファイル(カウンタ数だけをいれる)
 →以下、カウンタファイルと呼びます

 アクセスログは、1アクセス1ファイル
 →以下、アクセスファイルと呼びます。

 として、実際にアクセスログを見るときに、これらのアクセスファイルをあつめてきて、見せるようにします。

●いろんなアクセスカウンタをつくりたいので、各アクセスカウンタには、任意の英数字の組み合わせで作るIDというのを持つことにします。
 同じIDは、同じカウンタファイルをみます(なので、それらのアクセスのトータル数となります)。
 違うIDなら、違うアクセスカウンタということになります。
 これを実現するため、1つのIDに1ディレクトリ(1フォルダ)をわりあて、そのフォルダの中に、カウンタファイルと、各アクセスファイルを書き出すようにします。




詳細設計



(1)必要な変数を取得する
1-1.POST型、GET型で送られる全ての変数を@qsに入れる。
    ここでは、日本語の引数はこないことが前提なので、
    別にURLエンコーディングはしていない
    →もうひとつのほうのCGIでは、やっている。

1-2.ホスト名とIPアドレスを取得し、もし、ホスト名が入っていなかったら
    gethostbyaddrで取得する。それでも取得できないときは、アドレスをホスト名に入れる

1-3.日時を取得する。
    localtime(time)だと、年は1900、月は1足す必要がある

1-4.IDが入っていなかったら、defaultというIDにする

1-5.カウンタのファイルと、アクセスファイルを入れるフォルダがあるか
    確認し、無かったら作る。
    属性は700(自分はフルアクセス、それ以外はアク禁)

1-6.カウンタファイルを開き、カウンタの値を取得する
    そして、カウンタの値に1をたし、保存する。
    ただし、このとき、排他制御を行うため、カウンタファイルの名前の末尾に.lock
    という名前を付けたファイルを作成し、そのファイルをロックすること。
    カウンタ更新後は、アンロックする。
 
    カウンタファイル名は、IDのディレクトリの下の "mitayo.dat"固定。
    カウンタファイルの属性は600(自分は読み書きOK,他はアク禁)

1-7.アクセスファイルを作成し、そのなかにアクセス記録を書き出す。
    名前は、一応一意になるように(いや、カウンタの数字で一意になってるはずなんだが)
    mkstempを使って
    IDのディレクトリの下の、"mitayo_" のあとカウンタ番号そのあと"_"で、
    あとはmkstempの指定した値
    書き出し内容は
       アドレス、ホスト名、年、月、日、時、分、秒をタブ区切りで、
       最後に改行をいれる

(2)画像を書き出す
2-1.出力文字列を設定する
  ”ID:"のあと、IDをかき、そのあと" NO:"のあとに、カウンタNOを書く。
  →ここをカウンタ番号だけにすれば、アクセスカウンタになる。

2-2.画像のクラスを生成する

2-3.使う色を、colorAllocateメソッドを使って確保する

2-4.背景を透明にして、インターレースにする

2-5.外側の四角形を書く

2-6.テキストを書く

2-7.ヘッダの書き出し。
   "Content-type: image/png\n\n"

2-8.png形式で書き出す。




ソースのありか



 上記の仕様をもとに、作成したソースは、こちら
http://www.geocities.jp/xmldtp/bv_dispid_cgi.txt


●具体的に、アクセスカウンタにするには
				#################################
				#	画像ID書き出し	    #
				#################################
#出力文字列を設定
$outtext="ID: " . $qs{"ID"} . "  NO: ". $qs{'mitayoNo'};


の$outtextで始まる行を

$outtext=$qs{'mitayoNo'};


に書き換えてください。




インストール


 上記のソースファイルを、dispid.cgiという名前で保存し(実は、ほかの名前でもいいけど)、CGI置き場において、CGIが動く属性(700とか)に変えたら、それを呼び出すHTMLファイルを作ってください。呼び出し方は、したのようなかんじ。

<IMG SRC="CGIのURL/dispid.cgi?ID=自分でつけたID">

もちろん、<>は半角にしてくださいね。
CGIのURLは、http://ではじまる、各自のCGIのURL,
IDは、任意の英数字です
 (ディレクトリとして付けられる名前で、かつ1バイト文字なら、実はなんでもOK)




 次に、本当は、ベリカードでいうと、報告のHTMLを説明することになるのですが、そんなことより、ここでとった、アクセスファイルを、どうやってみるのよ?ということが気になると思うので、それについて、今度、気が向いたときに説明します。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

クレジット決済会社、ゼロだけでなく、ゼウスも買収されたようだ。ライブドアに!!でもSBに負けてる?

2005-12-27 14:05:46 | Weblog

 ECサイトなんかで、クレジット決済っていうと、まあ、普通クレジット代行会社を使う。
 もちろん、レンタルサーバー屋さんがが用意してくれるときもあるんだけど、そのレンタルサーバー屋さんは、実は、クレジット代行会社を使っていることが、おおい。

 ちなみに、このほかに、口座引き落としと、コンビニ決済等がある。これは、集金代行会社をつかう。

 で、この2つを同時にやるサービスとして、ソフトバンクペイメントのPAYES(ペイエス)がある。

 クレジット代行会社としては、ゼウスと、GMOペイメントゲートウェイが有名である。

 集金代行会社としては、ダイヤモンドファクター(名前かわった。三菱UFJファクター)とか、クオーク(SMBC系)が有名である。

ここまでが、予備知識。



  
 ホリエモンがライブドアの株主総会+事業報告会で、クレジットカード決済会社ゼロとのことを言っていた。
 ゼロは、ライブドアの子会社になるみたいだ。ふーん。。。。

 とおもって、昨日の日本証券新聞(日付的には今日)を見てびっくり!

 ゼロだけでなく、ゼウスも買収するんじゃん(@_@!)すげー。
 クレジット決済の雄だな、ライブドアは。。




 でもでもね、開発側から言うと、ソフトバンクペイメントサービスみたいに、クレジットだけでなく、ぜーーんぶ、ひとつの会社でやってほしいのよ。

 めんどーくさいのよ。いろんな会社の人と会って、打ち合わせするの。

 っていうことで、金融決済の雄をめざす(のかな?)ライブドアとしては、SB(ソフトバンク)なんかにまけちゃだめっすよね。
 集金代行会社を買収して、もう、ライブドア決済として、なんでも決済できるようにしないと。
 で、そのお金は、最強ライブドア銀行(じゃなかった、西京ライブドア銀行)に振り込ませると、手数料割引とか。。

 まあ、そのくらいやっていただかないと、やっぱ、金融はまだソフトバンクかな。。と思ってしまう。
 まあ、三菱UFJファクターを買収したら、すごいけどね(ありえねー ^^;)


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする