HTTPクッキー
HTTPクッキー(cookie)は、Webアプリケーションでよく使われる手法です。クッキーは、Webサーバーからの応答で変数名と値をセットにしてクライアントに保存される仕組みで、訪問者別カウンターやショッピングカートなどでよく使われています。ただし、携帯電話などのブラウザでは使えない場合もありますので、注意が必要です。
PHPでのクッキー利用
PHPでのクッキーの利用方法は至って簡単です。クッキーに値をセットする場合は、HTTPヘッダにクッキー情報を書き込めばいい訳で、これにはsetcookie( )関数を使います。setcookie( )はブラウザに何らかの出力を行う前にコールする必要があります。クッキーに保存した変数と値を受け取る方法は、GETやPOSTの場合と同じです。尚、クッキー変数は配列$HTTP_COOKIE_VARSでも受け取る事が出来ます。
setcookie( )関数
■書式
int setcookie ( string name [ , int value [ , int expire [ , string path [ , string domain [ , int secure ] ] ] ] ] )
■用法
クッキーを送信します。第1引数のname を除くすべての引数はオプションです。クッキーは必ず他のヘッダーを送信する前に送信されなければなりません。これはクッキーの制約であり、PHPのものではありません。この制約により、<html>や<head>タグを出力する前にsetcookie( )を呼び出す必要があります。
引数name のみが指定された場合は、name と言う名前のクッキーはリモートクライアントから削除されます。
引数expire 、secure 以外の引数に関しては、引数の指定をスキップする為に空文字列("")を指定する事が出来ます。引数expire 、secure はゼロ「0」でスキップすることが出来ます。
引数expire は、time( )又はmktime( )関数により返されたUNIX標準時を現す整数です。これを指定しなければ、ブラウザを一旦閉じるとクッキー情報はリセットされてしまいます。
引数secure は、クッキーがHTTPS接続によってのみ伝送される事を指定します。
■注意点
(1)クッキーは、クッキーを有効にする為にページをリロードするまでアクセスする事が出来ません。
(2)クッキーは、設定されたものと同じパラメータで削除する必要があります。クッキーを削除する場合には、ブラウザの削除機構を起動する為に、必ず有効期限を過去に設定する必要があります。
■使用例
setcookie ( "Cookie", $value, time( )+7*24*3600 ); //1週間で期限切れ
setcookie ( "Cookie" ); //Cookieと言う名前のクッキーを削除
setcookie ( "Cookie", $value, time( )-60 ); //有効期限を1分前に設定
引数value の部分は、クッキーの送信を行う際に自動的にURLエンコードされます。クッキーを受信する際は、自動的にデコードされてクッキー名と同じ名前の変数に格納されます。スクリプト内部でStCookieの内容を見たい場合は、以下の例のいずれかを使用して下さい
echo $StCookie;
echo $HTTP_COOKIE_VARS{"StCookie"};
配列の利用
クッキー名で配列を記述する事により、クッキーの配列を設定する事も出来ます。これにより配列要素と同数のクッキーが設定されますが、クッキーがスクリプトに受信された際に、値はクッキー名を有する配列に置き換えられます。
■使用例
setcookie ( "Cookie[1]", "1番目" ); setcookie ( "Cookie[2]", "2番目" ); setcookie ( "Cookie[3]", "3番目" ); if ( isset ( $cookie) ) { while ( list ( $name, $value ) = each ( $cookie ) ) { print "$name => $value<br>\n"; } } ▼実行結果 1 => 1番目 2 => 2番目 3 => 3番目 ■isset( )関数
書式: int isset ( mixed var )
用法: 引数var が文字列であればtrue、そうでなければfalseを返します。
■each( )関数
書式: array each ( array array )
用法: 引数array から、次のキーと値をペアで返し、配列の内部ポインタを進めます。
ファイルのアップロード 前へ
次へ 日付のフォーマット文字列