Python CGIプログラミングでCookieを取得する方法をわかりやすく解説
Cookieの取得方法
設定済みのCookieをすべて取得するのは非常に簡単です。CookieはCGIの環境変数 HTTP_COOKIE に保存されており、次のような形式で格納されています。
key1=value1;key2=value2;key3=value3...
複数のCookieはセミコロン(;)で区切られ、それぞれが「キー=値」のペアになっています。この文字列を分割して解析することで、必要な値を取り出せます。
Cookieを取得するサンプルコード
以下は、環境変数 HTTP_COOKIE から UserID と Password の値を取り出す例です。ここでは、現在主流となっているPython 3系の記述方法で示します。
#!/usr/bin/python3
# CGI処理用モジュールをインポート
from os import environ
import cgi, cgitb
cgitb.enable() # エラー発生時にブラウザへ詳細を表示
if 'HTTP_COOKIE' in environ:
# セミコロンで区切って各Cookieを処理
for cookie in map(str.strip, environ['HTTP_COOKIE'].split(';')):
(key, value) = cookie.split('=', 1)
if key == "UserID":
user_id = value
if key == "Password":
password = value
print("Content-Type: text/plain
")
print("User ID = %s" % user_id)
print("Password = %s" % password)実行結果
上記のスクリプトで設定されたCookieに対して実行すると、次のような結果が出力されます。
User ID = XYZ Password = XYZ123
コードのポイント
- split(';'):HTTP_COOKIE の値をセミコロンで分割し、個々のCookieに分解します。
- str.strip():各Cookieの前後にある余分な空白を除去します。
- split('=', 1):キーと値を「=」で分離します。第2引数に1を指定することで、値の中に「=」が含まれていても正しく処理できます。
なお、古いPython 2のコードでは print 文や has_key() メソッドが使われていましたが、これらはPython 3では廃止されているため、上記のように print() 関数と in 演算子を使う記述に置き換えることをおすすめします。
-
Pythonでパターンを出力する方法|三角形・数字・アルファベット・ピラミッドのコード例
Pythonでパターンを出力するには、ネストされた(入れ子構造の)forループを使用します。外側のループで行数を制御し、内側のループで列数を処理します。そしてprint文を工夫することで、目的に応じたさまざまなパターンを作成できます。パターンには、星(アスタリスク)パターン、数字パターン、アルファベットパターンなどがあり、三角形やピラミッドなど、さまざまな形状にも対応できます。パターン出力の基本これらのパターンは、print文を少し変更しながらforループを組み合わせることで出力できます。基本的な考え方はどのパターンも共通しており、違いはごくわずかです。ここからは、代表的なパターンのコードを実
-
Pythonプログラムの実行方法まとめ!IDLE・コマンドライン・PyCharmなど5つの方法を解説
コードを書いたら、次はそれを実行して出力結果を確認する必要があります。プログラムを実行することで、書いたコードが正しく動作し、期待通りの結果が得られるかどうかをチェックできます。幸いなことに、Pythonプログラムの実行はとても簡単です。この記事では、代表的な5つの実行方法をわかりやすく解説します。IDLEで実行するPythonに標準で付属しているIDLEを使ってプログラムを実行するには、以下の手順に従います。Pythonのコードを書いて保存します。メニューから「Run > Run Module」を選択するか、キーボードのF5キーを押すだけで実行できます。IDLEは初心者にとって扱いやす