HiiHahWIKI - making some notes for... -
E71:mod_pythonでcookieを使ってみる(1)
をテンプレートにして作成
開始行:
*E71:mod_pythonでcookieを使ってみる(1) [#gcb15992]
さてさて、mod_pythonでcookieを使ってみます。
sessionはあっさり使えたんですが、cookieのほうはだいぶ苦労...
まあ、cookieって、名前も一般的な機能も知ってたけど、ちゃ...
こちらのサンプルも、sessionと同じで、アクセスした回数をカ...
作成する対象のファイルは以下のとおり
+.htaccess
+cookie.py
2つのファイルを作成し、同じディレクトリに格納します。(小...
***.htaccess [#ge47b9ab]
.htaccessの内容は以下のとおり。
■.htaccess
# setting Handler
SetHandler mod_python
# Add Python Handler
PythonHandler cookie ←1
# Debug On
PythonDebug On
# Option OFF
Options None
+ハンドラーに「cookie」モジュールを指定します。
※小生は、sessionのサンプルを作成した時の.htaccesと同じフ...
***cookie.py [#gf5155a7]
同じく、内容は以下のとおり。
■cookie.py
from mod_python import Cookie,apache
def handler(req):
ck = Cookie.get_cookies(req) ←1
if not ck.has_key('counter'): ←2
ck = Cookie.Cookie('counter','0') ←3
message = \
'No sent cookie, so now create\n %s' % ck ←4
Cookie.add_cookie(req, ck) ←5
else:
tmp = int(ck['counter'].value) + 1 ←6
ck = \
Cookie.Cookie('counter',str(tmp)) ←7
message = 'cookie is %s' % ck ←8
Cookie.add_cookie(req, ck) ←9
req.write("<html>\n<body>\n<h1>\n")
req.write(message) ←10
req.write("\n</h1>\n</body>\n</html>\n")
return apache.OK
+apacheのリクエストオブジェクトを引き数にして、Cookieモジ...
+Cookieクラスのhas_keyメソッドで、counter要素があるかを判...
cookieにまだcounter要素が無い場合、3からの処理が、すでに...
+名前が「counter」、値が「0」のCookieクラスを生成し、ckに...
+出力するメッセージを生成します。
+Cookieモジュールのadd_cookie関数を実行し、3.で作成した...
+クッキーからcounterの値を取り出し、1プラス(カウントア...
+名前が「counter」、値は6.でカウントアップした数値で、C...
+出力するメッセージを生成します。
+Cookieモジュールのadd_cookie関数を実行し、7.で作成した...
+メッセージを出力します。
***動かしてみる [#baac34fb]
さてさて、資材を配置し、apacheを起動し、配置したURLにアク...
ちなみに、アクセスしたURLは「http://127.0.0.1/demo21/cook...
&br;&br;
&ref(Screenshot0069.jpg);
&br;
あれ?出力された内容がファイルダウンロードになって、テキ...
もう一度アクセスすると、
&br;&br;
&ref(Screenshot0070.jpg);
&br;
うむ~、なぜだ???
&br;&br;
***動かしてみる2 [#o7235736]
色々試行錯誤した結果、原因はおいといて、とりあえず、URLの...
アクセスするURL:「http://127.0.0.1/demo21/cookie'''.html...
&br;&br;
&ref(Screenshot0071.jpg);
&br;おお、ちゃんと表示された!&br;
再度アクセスすると・・・&br;&br;
&ref(Screenshot0072.jpg);
&br;
ちゃんとカウントアップされている!
***原因の考察 [#ef020809]
状況証拠としては
-URLの指定で、最後に「.html」を入れるとちゃんとブラウザー...
~(これができるのは、.htaccessのハンドラーの設定で拡張子...
-クッキーを使ってない場合は、「.html」が入ってなくてもち...
-クッキーを使って、「.html」を入れないと、ファイルをダウ...
ってことがわかってます。
まあ、おそらく原因は、クッキーの使い方がいまいちなことな...
まあ、そのうちわかるかな~
わかったら記事に追記します!
終了行:
*E71:mod_pythonでcookieを使ってみる(1) [#gcb15992]
さてさて、mod_pythonでcookieを使ってみます。
sessionはあっさり使えたんですが、cookieのほうはだいぶ苦労...
まあ、cookieって、名前も一般的な機能も知ってたけど、ちゃ...
こちらのサンプルも、sessionと同じで、アクセスした回数をカ...
作成する対象のファイルは以下のとおり
+.htaccess
+cookie.py
2つのファイルを作成し、同じディレクトリに格納します。(小...
***.htaccess [#ge47b9ab]
.htaccessの内容は以下のとおり。
■.htaccess
# setting Handler
SetHandler mod_python
# Add Python Handler
PythonHandler cookie ←1
# Debug On
PythonDebug On
# Option OFF
Options None
+ハンドラーに「cookie」モジュールを指定します。
※小生は、sessionのサンプルを作成した時の.htaccesと同じフ...
***cookie.py [#gf5155a7]
同じく、内容は以下のとおり。
■cookie.py
from mod_python import Cookie,apache
def handler(req):
ck = Cookie.get_cookies(req) ←1
if not ck.has_key('counter'): ←2
ck = Cookie.Cookie('counter','0') ←3
message = \
'No sent cookie, so now create\n %s' % ck ←4
Cookie.add_cookie(req, ck) ←5
else:
tmp = int(ck['counter'].value) + 1 ←6
ck = \
Cookie.Cookie('counter',str(tmp)) ←7
message = 'cookie is %s' % ck ←8
Cookie.add_cookie(req, ck) ←9
req.write("<html>\n<body>\n<h1>\n")
req.write(message) ←10
req.write("\n</h1>\n</body>\n</html>\n")
return apache.OK
+apacheのリクエストオブジェクトを引き数にして、Cookieモジ...
+Cookieクラスのhas_keyメソッドで、counter要素があるかを判...
cookieにまだcounter要素が無い場合、3からの処理が、すでに...
+名前が「counter」、値が「0」のCookieクラスを生成し、ckに...
+出力するメッセージを生成します。
+Cookieモジュールのadd_cookie関数を実行し、3.で作成した...
+クッキーからcounterの値を取り出し、1プラス(カウントア...
+名前が「counter」、値は6.でカウントアップした数値で、C...
+出力するメッセージを生成します。
+Cookieモジュールのadd_cookie関数を実行し、7.で作成した...
+メッセージを出力します。
***動かしてみる [#baac34fb]
さてさて、資材を配置し、apacheを起動し、配置したURLにアク...
ちなみに、アクセスしたURLは「http://127.0.0.1/demo21/cook...
&br;&br;
&ref(Screenshot0069.jpg);
&br;
あれ?出力された内容がファイルダウンロードになって、テキ...
もう一度アクセスすると、
&br;&br;
&ref(Screenshot0070.jpg);
&br;
うむ~、なぜだ???
&br;&br;
***動かしてみる2 [#o7235736]
色々試行錯誤した結果、原因はおいといて、とりあえず、URLの...
アクセスするURL:「http://127.0.0.1/demo21/cookie'''.html...
&br;&br;
&ref(Screenshot0071.jpg);
&br;おお、ちゃんと表示された!&br;
再度アクセスすると・・・&br;&br;
&ref(Screenshot0072.jpg);
&br;
ちゃんとカウントアップされている!
***原因の考察 [#ef020809]
状況証拠としては
-URLの指定で、最後に「.html」を入れるとちゃんとブラウザー...
~(これができるのは、.htaccessのハンドラーの設定で拡張子...
-クッキーを使ってない場合は、「.html」が入ってなくてもち...
-クッキーを使って、「.html」を入れないと、ファイルをダウ...
ってことがわかってます。
まあ、おそらく原因は、クッキーの使い方がいまいちなことな...
まあ、そのうちわかるかな~
わかったら記事に追記します!
ページ名: