データをファイルで保存する

Webアプリでデータを保存してみる。YAML形式のファイルに保存する。
クライアント側のブラウザで、ユーザがIDとパスワードを入力し、submitボタンを押すとサーバ側でスクリプトidandpass.pyが実行される。

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
</head>
<body>
  <form action="/cgi-bin/idandpass.py" method="POST">
    Input user ID and password<br />
    <input type="text" name="usrid" size="20" maxlength="10"/><br />
    <input type="password" name="passwd" size="20" maxlength="10"/>
    <br />
    <input type="submit" name="submit" />
  </form>
</body>
</html>

サーバ側で実行するidandpass.pyは以下の通り。

#!/usr/bin/env python

import cgi
import yaml
import subprocess

form = cgi.FieldStorage()
userid = form.getvalue('usrid', '')
userps = form.getvalue('passwd', '')

try:
    fp = open('idandpass.yaml', 'r')
    string = fp.read()
    dat = yaml.load(string)
    fp.close()
except:
    dat = dict()

dat[userid] = userps

fp = open('idandpass.yaml', 'w')
yaml.dump(dat, fp)
fp.close()

print "Content-type: text/html\n"
print "<html><body>\n"
print "Save your ID and password"
print "</body></html>"

うまくいった。テキストエディタYAMLのファイルは読めてしまうので、パスワードを保存するのにはもちろん適さないが他で用途はあるであろう。
ここまでの進捗を絵にしておく。