合言葉は「メルヘン」ゆってごらん
d:id:imait:20090210:1234266258のSession、d:id:imait:20090210:1234266815のHTMLを試すためのコードも公開しておきます。
Sessionはsession.pyというファイルにして、HTMLはhtml.pyというファイルにして、libというディレクトリに放りこみます。また、SQLiteのファイルを置いておく、dbというディレクトリも作っておきます。
あとは適当にパーミッションを設定したら動きます。ええと、私はこのファイルをindex.pyという名前で動かしてましたが、どんな名前でも動くはずです。
試す人はいないと思うけど、というか読んでる人いるかどうかもあれだけど、まあ一応公開するだけしときます。
#! /usr/bin/env python # -*- coding: utf-8 -*- ''' test code ''' import codecs import string import cgi import cgitb; cgitb.enable() import sys import locale import datetime import Cookie import os import pickle import base64 sys.path.append('./lib/') import html import session locale.setlocale(locale.LC_ALL, '') sys.stdout = codecs.lookup('utf-8')[-1](sys.stdout) sitetitle = u'サイト名' html = html.HTML(encode=u'utf-8', lang=u'ja', sitetitle=sitetitle) html.set_page_title(u'ページ名') cookie = Cookie.SimpleCookie(os.environ.get(u'HTTP_COOKIE', u'')) sesid = u'' if cookie.has_key(u'session'): sesid = cookie['session'].value validity = u'15 minutes' mys = session.Session(u'./db/session', sesid, validity, True) if sesid == mys.get_id(): form = cgi.FieldStorage() if form.has_key(u'delete_key'): mys.delete() html.print_resp_header() html.print_html_header() print(html.p(u'鍵を捨てました。')) else: cookie['session'] = sesid html.set_cookie(cookie) c_vals = mys.get_data() if not isinstance(c_vals, list): c_vals = [] if form.has_key(u'c_val'): c_val = form.getvalue(u'c_val', u'') c_val = c_val.decode('utf-8') c_vals.append(c_val) mys.set_data(c_vals) mys.save_data() html.print_resp_header() html.print_html_header() print(html.p(u'鍵は有効です。')) print(html.p(sesid)) print(u'<dl>') print(u'<dt>鍵の有効期間</dt><dd>' + validity + u'</dd>') print(u'<dt>鍵の作成時刻</dt><dd>' + mys.get_created_time() + u'</dd>') print(u'<dt>最終アクセス時</dt><dd>' + mys.get_accessed_time() + u'</dd>') print(u'<dt>鍵の廃棄時刻</dt><dd>' + mys.get_expire_time() + u'</dd>') print(u'<dt>前回アクセス時のリモートアドレス</dt><dd>' + mys.get_remote_addr() + u'</dd>') print(u'</dl>') print(html.p(u'時間帯はGMTです。')) print(u''' <form method="post" action="index.py"> <input type="hidden" name="delete_key" value="bye" /> <p><input type="submit" value="鍵を捨てる" /></p> </form> ''') print(u''' <form method="post" action="index.py"> <p>セッションにデータを追加 : <input type="text" name="c_val" /> <input type="submit" /></p> </form> ''') if len(c_vals) > 0: for cv in c_vals: print(html.p(cv)) else: form = cgi.FieldStorage() seikai = u'メルヘン' if form.has_key(u'aikotoba'): aikotoba = form.getvalue(u'aikotoba', u'') aikotoba = aikotoba.decode(u'utf-8') if aikotoba == seikai: cookie['session'] = mys.get_id() html.set_cookie(cookie) html.print_resp_header() html.print_html_header() print(html.p(u'鍵がわたされました。')) print(html.p(u'ページを更新してください。')) else: html.print_resp_header() html.print_html_header() print(html.p(aikotoba + u'は正しい合言葉ではありません。')) else: html.print_resp_header() html.print_html_header() print(html.p(u'合言葉は' + seikai)) print(u''' <form method="post" action="index.py"> <p><input type="text" name="aikotoba" id="aikotoba" value="" /> <input type="submit" /></p> </form> ''') print(u''' <form method="post" action="index.py"> <p><input type="submit" value='ページの更新'/></p> </form> ''') print(html.p(u'REMOTE_ADDR : ' + os.environ.get('REMOTE_ADDR', u''))) print(html.p(u'REMOTE_HOST : ' + os.environ.get('REMOTE_HOST', u''))) html.print_html_close()