みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

cookieが無効のブラウザへの対応方法

PHP+MySQL+cookie(セッション管理)にてアクセス解析を構築しております。

仕組みとしては、サイトにアクセスがあった場合に
session_start()にてPHPSESSIDを発行し、DBに記録して
以降の行動をPHPSESSID毎にユーザーを特定して記録しております。
この時、DBにはcookieを有効にしたアクセスは
直接「123123abcd123123abcd123123abcd12」の形で記録され
逆にcookieが無効(?)の場合は「PHPSESSID=123123abcd123123abcd123123abcd12」
という形で記録されております。
(”isset($_COOKIE["PHPSESSID"])”にて判定しています。)

cookieが有効の場合、1セッション内の行動であれば
一度記録したPHPSESSIDにてユーザーを特定することができ、問題ないのですが
cookieが無効の場合だと、PHPSESSIDは発行されますが
URLにパラメータとして持たせ続けないと、その行動が
どのユーザーのものか特定できないと思います。

また、アクセス解析を見てみると、結構cookieを無効にした
ユーザーからのアクセスも多く、無視できない数字でした。

ここで質問ですが、
1.「PHPSESSID=123123abcd123123abcd123123abcd12」の形で
記録されているものはcookieが無効のアクセスと考えていいですか?

2.cookieが無効の場合、上記の値を保持し続ける
良い方法があれば教えて下さい。(サイト内で)

投稿日時 - 2008-11-27 11:01:04

QNo.4510830

すぐに回答ほしいです

質問者が選んだベストアンサー

追加質問についてです。
>(1)どこからアクセスしてきたか
情報はリファラ値しかありませんので、operaみたいに、適宜リファラ送信をoffにしたり、プロキシの設定によっては消したりされるので、そういうアクセスでは、情報が取れないのは致し方ありません。
社内ネットワークからだとプロキシ操作が行われていることもあると聞きます。
JavaScriptでimgタグを出力するタイプのアクセス解析では、JavaScriptのrefererrをurlのqueryに付けるので、こちらは通常消されることはないので、両方仕掛けておいて、IPアドレスやcookieで同一アクセスかを判断し、情報の有る方を記録となるでしょうか。
JavaScript offの場合は、この情報も取れませんが、一般ユーザーでは、少数派と思います。よって、検索ロボット以外でどっちにもrefererがないのは、おおむね、お気に入りからか、url直接入力と考えてよいでしょう。
検索ロボットは、JavaScript出力の画像にアクセスしてくるのは稀です。

>(2)顧客の注文金額はいくらか
通常、注文時は、ログインするとか、誰でもが勝手に注文送信したりはできないようにしますよね?
そのときには、「cookieを有効にして下さい」といった注意を促せば、きちんとcookie sessionで情報が取れると思います。
お節介かもしれませんが、掲示板の迷惑投稿と同じように、注文フォームにもいろいろ攻撃がきますので、webセキュリティについては、十分御注意下さい。

投稿日時 - 2008-11-29 21:11:50

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

cookie off と記録されるアクセスについて追加です。
画像でのアクセスログではなく、phpでページ出力時のアクセスログだと、cookie off の閲覧には、検索エンジンのデータ収集もありますね。googlebotは結構頻回に来ます。
あと、携帯とかも、まだcookieに対応してないのもあるようですし。
検索エンジンのアクセスは、browser名に、検索エンジン名(googlebotとかyahoo slurpとか、なんとかspiderとか)が入ってるので、一般ユーザーとの区別がつきます。

前回の回答時は見落としてたけど、$_COOKIEにデータがセットされているかによるチェックだと、初回訪問時もデータ無しですね。cookieはonでも、1頁だけ見て去っていく場合は、session cookie は取得できないと思います。

アクセスログとしてどのデータを集めるかは目的次第でしょう。
cookie on の時の情報は、精度が高いと言うより、一般の多くの人はcookie on でアクセスしているし、いちいち消さないので、cookie期限を30日とか、すこし長く設定すると、再来ユーザーの動向を探りやすいといったところでしょうか。
通常session用のcookieは、ブラウザを終了すると消す設定ですが、同一sessionでどれくらい複数のページにアクセスがあるかをみるなら、現行の方法でもよいかもしれません。

投稿日時 - 2008-11-28 17:25:04

補足

2度にもわたり、回答頂いて誠に有り難うございます。

仰るとおりsession cookieだけだと、確かにそうなりますね。。
クライアントのcookieに値を埋め込む形の方が良さそうですね。

もしよければ続けて質問させてください。
このアクセス解析の真の目的は、購入ページからメールを送った
顧客が、(1)どこからアクセスしてきたか(2)顧客の注文金額はいくらか
を計測したく、自作で構築している次第です。
また(1)の部分に関しては大きく分けて
(a)KW広告(b)検索エンジン(c)お気に入り(d)他サイトからのリンク
の4種類です。
(a)に関しては、広告特有のパラメータをwindow.locationで拾えますので、判定可能です。
(b)・(d)は(a)以外のアクセスでリファラ値に含まれる文字列を拾って判定します。
(c)はリファラ値が空のもので判定します。
ただ、検索ロボットの事を考慮してなかったので、
それを除外するロジックは組み込まないといけませんね。

この目的の場合、cookieが有効なアクセスについて上記の(1)(2)を記録する
有効な方法は何か良い方法がありますでしょうか。

投稿日時 - 2008-11-28 17:43:28

ANo.1

session id は、cookieに持たせるか、URLにパラメータとして持たせるかの2つしか方法はないでしょう。
ユーザー特定だけなら、IPアドレス($_SERVER["REMOTE_ADDR"])でも出来そうですけど?
同一session内では通常同一IPアドレスです。
常時接続のユーザーなら、過去のセッションも同一IPアドレスとなりますけど、アクセス間隔で判るでしょう。
電話回線からのインターネット接続ならsessionは維持しながら、IPアドレスは変わると言うこともありうるけど、現在はごく少数でしょう。

>結構cookieを無効にしたユーザーからのアクセスも多く
私も情報見るだけの時は、cookieは切ってます。ここの質問掲示板も回答を付けるためにログインするときだけcookieを送信に切り替えます。
ちょっとでもセキュリティに関心のあるユーザーならたぶん皆そうするでしょう。

投稿日時 - 2008-11-27 17:31:00

補足

なるほど、確かにIPアドレスを使えば、ある程度絞り込む事は
可能だとおもうのですが、例えば企業内のパソコンなどから
アクセスしてきた場合、原則同じIPアドレスになってしまいますよね。

またどこの資料を見ても、完全にユーザーを特定することは難しいと
書いており、その意味もわかるのですが、
どちらかの方法で、ある程度は妥協するしかないのですね。。

どこかにWebalizer(でしたっけ?)はIPアドレスにて、
GoogleAnalyticsはcookie発行型と書いていました。
IPの方が数が多く記録されるとあったので、cookieの方が精度が
高いのかなと思い、cookieを選びなんとかcookieで、と思った次第です。

回答誠に有り難うございました。

投稿日時 - 2008-11-27 17:43:03

あなたにオススメの質問