PHP: クッキー(Cookies) - Manual
PHP  
downloads | documentation | faq | getting help | mailing lists | | php.net sites | links | my php.net 
search for in the  
<PHP による HTTP 認証Sessions>
view the version of this page
Last updated: Tue, 21 Dec 2004

第 34章クッキー(Cookies)

PHP は、HTTP クッキー(Cookie)を完全にサポートします。クッキーは、リ モートブラウザに文字列データを保存したり、再訪するユーザーを特定したりす る機構です。setcookie() 関数を使用してクッキーを セットすることができます。クッキーは HTTP ヘッダーの一部なので、 setcookie() はブラウザに何らかの出力を行う前にコー ルする必要があります。この制約は、header() 関数 に課されているものと同じです。また、 出力バッファ関数を使用して、設定するクッキーや送信する ヘッダの内容が決まるまでスクリプトからの出力を遅らせることが出来ます。

クライアントから送られた全てのクッキーは、register_globals variables_orderの設定値に従って、 GET や POST メソッドのデータと全く同様に自動的に PHP 変数に変換 されます。多数の値を一つのクッキーに割り付けたい場合は、 [] をクッキー名に加えてください。

PHP 4.1.0以降では、クライアントから送信された全てのクッキーは常に $_COOKIEという(常にグローバルな)配列に格納されます。 それ以前のバージョンでも、track_varsがセットされていれば $HTTP_COOKIE_VARSにクッキーの内容が格納されます。 (この設定はPHP4.0.3以降は常にオンになっています)

ちょっとした注意やブラウザのバグといった詳細に関しては、 setcookie()を参照してください。



add a note add a note User Contributed Notes
クッキー(Cookies)
mega-squall at caramail dot com
23-Feb-2005 09:04
I found a solution for protecting session ID without tying them to client's IP. Each session ID gives access for only ONE querry. On the next querry, another session ID is generated and stored. If somebody hacks the cookie (or the session ID), the first one of the user and the pirate that will use the cookie will get the second disconnected, because the session ID has been used.

If the user gets disconnected, he will reconnect : as my policy is not to have more than one session ID for each user (sessions entries have a UNIQUE key on the collomn in which is stored user login), every entries for that user gets wiped, a new session ID is generated and stored on users dirve : the pirate gets disconnected. This lets the pirate usually just a few seconds to act. The slower visitors are browsing, the longer is the time pirates get for hacking. Also, if users forget to explicitly end their sessions .... some of my users set timeout longer than 20 minutes !

IMPORTANT NOTE : This disables the ability of using the back button if you send the session ID via POST or GET.
James Olsen
22-Jan-2005 04:14
Tying the session to the IP of the user is not a good idea. Some users, notably AOL users, are behind a rotating proxy which means their hits to the server will actually be coming from different IP addresses over the duration of their visit. Trying the session to the IP will not work properly for those users.
myfirstname at braincell dot cx
24-Sep-2003 03:47
[Editor's note: Wilson's comment has been deleted since it didn't contain much useful information, but this note is preserved although its reference is lost]

Just a general comment on Wilton's code snippet: It's generally considered very bad practice to store usernames and/or passwords in cookies, whether or not they're obsfucated.  Many spyware programs make a point of stealing cookie contents.

A much better solution would be to either use the PHP built in session handler or create something similar using your own cookie-based session ID.  This session ID could be tied to the source IP address or can be timed out as required but since the ID can be expired separately from the authentication criteria the authentication itself is not compromised.

Stuart Livings

<PHP による HTTP 認証Sessions>
 Last updated: Tue, 21 Dec 2004
show source | credits | sitemap | contact | advertising | mirror sites 
Copyright © 2001-2005 The PHP Group
All rights reserved.
This unofficial mirror is operated at: /
Last updated: Mon Mar 14 08:13:06 2005 Local time zone must be set--see zic manual page