setcookie

ブラウザにクッキーを保存する

定義

関数の型 #include <acpplib.h>
void setcookie(const char *pName,const char *pVal=NULL,time_t pExpire=0,const char *pPath=NULL,const char *pDomain=NULL)
引数*pNameクッキーの名前
*pValクッキーの値(省略可)
pExpire有効期限(省略可)UNIX標準時を現す整数
*pPathクッキーのパス名(省略可)
*pDomainクッキーのドメイン名(省略可)
戻値なし

説明

クッキーは次のようにしてブラウザ、CGIプログラムで送受信されます。
ブラウザCGIプログラム環境変数 HTTP_COOKIEとして与えられる
ブラウザCGIプログラムHTTP応答ヘッダにSet-Cookie:という情報を追加する
setcookie() は、送信したいクッキーのデータをHTTP応答ヘッダとして追加します。追加するだけで送信しません。このデータは、cout_header関数 , cout_head関数 , cout_body関数 , begin_html関数のいずれかが実行されたときに送信されます。このため、setcookie() はこれらの関数を使用する前に使用しなければなりません。プリプロセス指令 #pragma COUT_HEADER , #pragma COUT_HEAD , #pragma COUT_BODY , #pragma BEGIN_HTMLを指令すると、start関数の前にHTTP応答ヘッダのキューを送信してしまいますので、クッキーを送信することはできなくなります。
pName を除くすべての引数はオプションです。
pValは関数内部でURLエンコードします
pExpireは time() または mktime() 関数により返されたUNIX標準時を現す整数です。

ブラウザが保存・管理しているクッキーは自動的グローバル変数gCookie[]や天下り変数に格納されます。

注意

  1. プリプロセス指令#pragma COUT_HEADER , #pragma COUT_HEAD , #pragma COUT_BODY , #pragma BEGIN_HTMLを指令すると本関数を使用することはできません。
  2. cout_header関数 , cout_head関数 , cout_body関数 , begin_html関数を実行する前に使用しなければなりません。