Python
 Computer >> コンピューター >  >> プログラミング >> Python

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 演算子を使う記述に置き換えることをおすすめします。

  1. Pythonでパターンを出力する方法|三角形・数字・アルファベット・ピラミッドのコード例

    Pythonでパターンを出力するには、ネストされた(入れ子構造の)forループを使用します。外側のループで行数を制御し、内側のループで列数を処理します。そしてprint文を工夫することで、目的に応じたさまざまなパターンを作成できます。パターンには、星(アスタリスク)パターン、数字パターン、アルファベットパターンなどがあり、三角形やピラミッドなど、さまざまな形状にも対応できます。パターン出力の基本これらのパターンは、print文を少し変更しながらforループを組み合わせることで出力できます。基本的な考え方はどのパターンも共通しており、違いはごくわずかです。ここからは、代表的なパターンのコードを実

  2. Pythonプログラムの実行方法まとめ!IDLE・コマンドライン・PyCharmなど5つの方法を解説

    コードを書いたら、次はそれを実行して出力結果を確認する必要があります。プログラムを実行することで、書いたコードが正しく動作し、期待通りの結果が得られるかどうかをチェックできます。幸いなことに、Pythonプログラムの実行はとても簡単です。この記事では、代表的な5つの実行方法をわかりやすく解説します。IDLEで実行するPythonに標準で付属しているIDLEを使ってプログラムを実行するには、以下の手順に従います。Pythonのコードを書いて保存します。メニューから「Run > Run Module」を選択するか、キーボードのF5キーを押すだけで実行できます。IDLEは初心者にとって扱いやす