2011年6月23日木曜日

Cookieを利用して訪問数を表示

Cookieは、Cookieとは で説明したとおり、WebページにアクセスしたユーザのPCに、個別データを一定期間書き込む仕組みです。

Cookieの機能を使用して、訪問数を表示してみました。
JavaScript + Cookie で訪問数を表示


<html>
<head>
<meta http-equiv="content-type" content="text/html;                                            
                charset=UTF-8"
/>
<title>Cookie Test</title>

<script type="text/javascript">
<!--
str = "count_now";

function getCookie(){
        var tmp = document.cookie;
        var index1 = tmp.indexOf("=", 0) + 1;
        var count = unescape(tmp.substring(index1));
     
        if(count == ""){
                count = 1;
        }
        return count;     
}

function setCookie(val){
        document.cookie = str + "=" + escape(++val);
}

var access = getCookie();
setCookie(access);

document.write("<h2>訪問回数</h2>");
document.write(access + " 回目の訪問です ");
//-->
</script>
</head>
</body>
</html>



■Cookieの読み込み
function getCookie(){
        var tmp = document.cookie;
        var index1 = tmp.indexOf("=", 0) + 1;
        var count = unescape(tmp.substring(index1));
     
        if(count == ""){
                count = 1;
        }
        return count;     
}

JavaScriptを使ってCookieの値を読み込むには、document.cookie を使います。
上の処理は、書き込まれたCookieに対して、訪問数(count)の値だけ抜きとって返す、ことをやっています。

■Cookieの書き込み
function setCookie(val){
        document.cookie = str + "=" + escape(++val);
}

Cookieを書き込むには、下記の書式で行います。
document.cookie = “name = 値; expire=値; domain=値; path=値; secure”;


■気になった事(時間があるときに調べる)

*ローカルでのテストで、FireFoxとChromeの動きが違っていました。
FireFoxだと、Web上にアップロードしていなくてもCookieの値の書き込みができていました。
Chromeだと、その状態では、Cookieの値が1から増えませんでした。
書き込みがうまくいっていないみたいでした。

htmlファイルをWeb上にアップロードすると、どちらも正しい動きをしています。
設定の問題?


*訪問数(count)の数を抜き出す作業にeval()関数を使ってたのですが、Chromeだとものすごく重かったです。
調べてみると、eval()関数の危険性についてのサイトが結構ありました。
http://www.atmarkit.co.jp/fcoding/articles/webapp/05/webapp05b.html
http://d.hatena.ne.jp/snaka72/20090617/1245247514

0 件のコメント:

コメントを投稿