トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

E71:mod_pythonでcookieを使ってみる(3)

Last-modified: 2013-08-24 (土) 02:14:21 (2982d)
Top / E71:mod_pythonでcookieを使ってみる(3)

E71:mod_pythonでcookieを使ってみる(3)

さてさて、第3弾は、Cookie.Cookieクラスで複数の値を扱ってみます。

まあ、MarshalCookie?クラスを使わなくても、複数の値を保持することは出来ます。
が、どっちがいいんですかね~

ではでは、サンプルソース見てみましょう!

このサンプルでも2つの値を扱います。

  • id : 値を保持する
  • counter : カウントアップする

という2つの値をCookieで保持し、処理します。

作成するソースは以下の2つ

  • .htaccess
  • cookie.py

.htaccess

解説は割愛します笑

# setting Handler 
SetHandler mod_python
# Add Python Handler
PythonHandler cookie
# Debug On
PythonDebug On
# Option OFF
Options None

cookie.py

ポイントだけ掻い摘んで解説します。

from mod_python import Cookie,apache
def handler(req):
    ck = Cookie.get_cookies(req)
    
    if not ck.has_key('counter'):
        value = { 'id':'0001','count':0}
        cntck = Cookie.Cookie('counter',0) ← 1
        idck = Cookie.Cookie('id','0001') ← 1
        message = \
        'No sent cookie, so now create\n %s, %s' % (cntck,idck)
        Cookie.add_cookie(req, cntck) ← 2
        Cookie.add_cookie(req, idck)  ← 2
    else:
        num = int(ck['counter'].value) + 1  ← 3
        Cookie.add_cookie(req,'counter',num) ← 3
        Cookie.add_cookie(req,'id',ck['id'].value) ← 3
        
        message = 'cookie is %s, %s' % (num,ck['id'])
        
    req.write("<html>\n<body>\n<h1>\n")
    req.write(message)
    req.write("\n</h1>\n</body>\n</html>\n")
    return apache.OK
    
  1. 「id」と「counter」に対応する2つのCookie.Cookieクラスのオブジェクトを作成します。
  2. 1.で作成したオブジェクトを2回に分けてリクエストオブジェクトにセットします。
  3. カウントアップし、同じく「id」、「counter」別々にリクエストオブジェクトにセットします。

手抜きな解説ですが、まあ掻い摘んだってことで笑

動かしてみる

さてさて、資材を配置し、apacheを起動し、配置したURLにアクセスすると、このような画面が表示されます。

Screenshot0082.jpg

おお、1回目の画面が表示された笑&br もう一回アクセスすると・・・;

Screenshot0083.jpg

ちゃんと足しこまれます。
もう一回アクセスすると・・・

Screenshot0084.jpg

ちゃんと足しこまれます。笑
もう一回アクセスすると・・・

Screenshot0085.jpg

ちゃんと足しこまれます。笑