User-Agent解析プログラム
アクセス統計を取ろうと思い立ったは良いが、ユーザーのUser-Agent文字列が実にフリーダムな書式で書かれていてブラウザとOSを取得するのにエラい苦労しました。
せっかくなので、その苦労の結果をPHPコードとして残して置こうと思います。
アクセス統計を取ろうと思い立ったは良いが、ユーザーのUser-Agent文字列が実にフリーダムな書式で書かれていてブラウザとOSを取得するのにエラい苦労しました。
せっかくなので、その苦労の結果をPHPコードとして残して置こうと思います。
アクセス解析プログラムを設置する場合、Webアプリ内で同期的に処理を行うか、JavaScript等で非同期に行うかという点について考えてみました。
まず同期で行う場合のメリットはというと、確実に全てのアクセスを捕捉できるということ。Webサイトには、通常の客のほかにも検索エンジンのクローラや怪しげなボットツールなどが訪問しにくるので、そういったアクセスの全てを把握できます。逆に、それらの機械的なアクセスが多い大手サイトの場合は、客のアクセス以上にその手のアクセスの情報ばかりが蓄積されてしまい、SEO解析の役に立たないというのも事実。
非同期で行う場合、アクセスログ集計の発動タイミングは恐らくJavaScriptによるAjax的な何かになると思われます。ということは、必然的に集計対象はAjaxに対応しているブラウザでのアクセスに絞られます。つまりは、客がブラウザでやってきた場合のアクセス状況のみを捕捉することになります。そして、何よりもサイトの表示に掛かる時間が同期版よりも確実に短い。前述のクローラ等のアクセスは全て捕捉することができなくなるのでそれらの情報が必要な場合には不便ですが、単純に客の行動を調べたい場合には非同期のほうが良いようです。
さて、非同期でアクセスログを取る場合の処理はどうすべきか。多くの場合、imgタグに画像出力CGIを貼り付ける形式が採用されているようですが、どうにもコード的に美しくない。となると、やはりPageLoad時にJavaScriptでAjaxをキックさせるのがベストかな。
以前から自分が所有しているCDリストを検索できるようなWebシステムを作りたいと思っていまして、ようやく先日制作を開始しました。現在は検索機能のみ有効にし、CDタイトルだけを検索できるようにしたものを設置してあります。
あとは、データ登録、更新、削除が行えるようにすることと、見た目を何とかすることでしょうか。このCDリストの目的は、出かけた先で掘り出し物CDを見つけて買ったは良いが、手持ちのCDと被ってしまった・・・という悲劇を無くすためのものです。
技術的には、PHP5、SQLiteを使った非常にシンプルで単純な物です。
所有CDリスト管理プログラムは完成したのですが、データの入力が大変。
数が数だけに、1枚1枚情報を手入力しなければならないので骨が折れます。
CDDBから自動でデータを取得するように作れば良いのかもしれませんが、それはそれで物理的にCDを挿入して登録して・・・の作業が発生するので大変です。ISOデータにして全てのCDをサーバーに入れてあるならば出来た芸当ではありますが、残念ながらそういうことはしていなかったので。
これを機に、持っているCDを全てISO化してファイルサーバーに格納したいなと思っています。ただ、HDDが故障したら一巻の終わりなのでそこが恐ろしいところではありますが。
覚え書き
DBからSELECTした結果を表示する場合、stringのデータに関してはstripslashesメソッドを使ってエスケープ文字の除去を行わないといけない。反対に、DBに書きに行く場合はPDOクラスのquoteを使ってシングルコーテーションをエスケープする処理を追加する。
DB上ではシングルコーテーションの前に必ず¥が入る事になるが、読み出したときにカットすれば問題なし。
ブログ「studio polyrhythm」のカテゴリ「CGI/PHP」に投稿されたすべてのエントリのアーカイブのページです。新しい順番に並んでいます。
次のカテゴリはWindowsアプリケーションです。