Skip to content

Python: Python2.7でCookieを使ってみる。

Python: python2.7でクッキーの概要

python2.7でクッキーを実装してみましたよ、のメモ書きです。

  1. ユーザがブラウザでユーザ名とパスワードを入力できるようHTMLを準備します。
  2. 入力されたユーザ名とパスワードをサーバ側でpythonにより取得します。
  3. ユーザ名とパスワードをクッキーに保存するようサーバー側でpythonからブラウザに命令します。
  4. 2回目以降のアクセスの際は、サーバー側で先にクッキーがないかを確認するようにします。
  5. 実際の実装例。


Python: HTMLでユーザ名とパスワード入力用フォームの作成

HTMLでユーザ名とパスワード入力用のページを準備します。

 <!-- ログインページの次に「next_page.py」に飛ぶ想定です。 -->
  <form action='./next_page.py' method='post'>
  <!-- ユーザ名入力用のフォーム作成 -->
  <input type='text' id='form_username' name='form_username' placeholder='ユーザ名'/>
  </br>
  <!-- パスワード入力用のフォーム作成 -->
  <input type='password' id='form_password' name='form_password' placeholder='パスワード'/>
  <input type="submit" name="button1" value="ログイン">
  </form>


Python: サーバー側でユーザが入力したユーザ名とパスワードを取り出す。

今回は、サーバー側でCGIをpythonで動かしました。
pythonのコードで、ユーザが入力してきたユーザ名とパスワードを取り出します。

import cgi

form = cgi.FieldStorage()
    if form.has_key("form_username"): #「form_username」は、上記のHTMLコードformタグ内のidです。
      f_name=form['form_username'].value
      username = f_name
    else:
      pass

    if form.has_key("form_password"): #「form_password」は、上記のHTMLコードformタグ内のidです。
      f_pw=form['form_password'].value
      password = f_pw 
    else:
      pass


Python: サーバー側で、クッキーに保存するHTMLを出力

ユーザが入力してきたユーザ名とパスワードを、ブラウザにクッキーとして保存するようにサーバー側でJavaScriptのコードを出力します。

print('''
       <script>
       document.cookie = "user01={}"; 
       document.cookie = "pass01={}";
       </script>
        '''.format(f_name,f_pw))

「user01」と「pass01」の箇所は、自分の好きな名前でOKです。


Python: サーバー側で、クッキーに保存されたデータがないか確認する。

ユーザが既にログインを行っていることを想定して、クッキーに保存されたユーザ名とパスワードがないかを確認します。

import os
import Cookie

cookie = Cookie.SimpleCookie()
cookie.load(os.environ.get("HTTP_COOKIE",""))

# cookieの取得
# 指定したキーが存在しない場合(該当キーのクッキーがない場合)は、キーエラーになります。
try:
  cookie_name=cookie["user01"].value
  cookie_pw=cookie["pass01"].value
  username = cookie_name
  password = cookie_pw
except KeyError:
  cookie_name="nocookie"
  cookie_pw="nocookie"


Python: 実際の実装の順番

こんな順番で実装してみましたよ、の例です。

  1. 既に保存されているcookieがないか確認します。
  2. 保存されているcookieがなければ、送信されたフォーム内容の取得を実施。
  3. ユーザ名とパスワードを検証してOKであれば、クッキーに保存。
# 実装例
try:
  クッキー取得
except:
  if ユーザがユーザ名/パスワードを送信してきた:
    ユーザ名/パスワード取得
    ユーザ名とパスワードを検証
    if 検証結果がOK:
      クッキーに保存
    else 検証結果がNG:
      ユーザ名/パスワードを再入力するように催促  
  else ユーザがユーザ名/パスワードを送信してない:
    ユーザ名/パスワードを入力するように催促




コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA