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

E71:mod_pythonでcookieを使ってみる(3) の変更点

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

*E71:mod_pythonでcookieを使ってみる(3) [#w0eb6591]

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

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

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

このサンプルでも2つの値を扱います。
-id : 値を保持する
-counter : カウントアップする

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

作成するソースは以下の2つ
-.htaccess
-cookie.py

***.htaccess [#t45fc770]
解説は割愛します笑

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

***cookie.py [#g45f5a21]
ポイントだけ掻い摘んで解説します。

 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
     
+「id」と「counter」に対応する2つのCookie.Cookieクラスのオブジェクトを作成します。
+1.で作成したオブジェクトを2回に分けてリクエストオブジェクトにセットします。
+カウントアップし、同じく「id」、「counter」別々にリクエストオブジェクトにセットします。

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

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

&ref(Screenshot0082.jpg);&br;

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

&ref(Screenshot0083.jpg);&br;

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

&ref(Screenshot0084.jpg);&br;

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

&ref(Screenshot0085.jpg);

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