13,005
回編集
235行目: | 235行目: | ||
{ | { | ||
print($_COOKIE["PHPSESSID"].'<br>'); | print($_COOKIE["PHPSESSID"].'<br>'); | ||
} | |||
?> | |||
</syntaxhighlight> | |||
<br><br> | |||
== セッション名の取得と変更 == | |||
セッションを開始した時、クライアントのクッキー名として使用する変数(セッション名)において、初期値はPHPSESSIDである。<br> | |||
この値の初期値は、php.iniファイルで設定されている。<br> | |||
<br> | |||
この初期値を変更する場合は、php.iniファイルの<code>session.name</code>項目を編集する。<br> | |||
<u>セッション名は英数字を組み合わせて指定する必要がある。</u><br> | |||
例. session.name = HOGE | |||
<br> | |||
セッション名がPHPSESSIDではない可能性があるため、<code>session_name</code>関数を使用してセッション名を取得する。<br> | |||
string session_name([string name]) | |||
session_name関数は、カレントのセッション名を返す。 | |||
nameを指定する場合、カレントのセッション名はその値に変更される。 | |||
セッション名は、リクエストが開始された際に セッション名に保存されたsession.nameの値にリセットされる。 | |||
したがって、各リクエストごとに(session_start関数またはsession_register関数を呼ぶ前に)、session_name関数を実行する必要がある。 | |||
パラメータ: | |||
name 新しく設定したいセッション名 | |||
戻り値: | |||
現在のセッション名 | |||
<br> | |||
<code>session_name</code>関数を引数無しで実行することにより、現在のセッション名を取得できる。<br> | |||
また、引数に別のセッション名を指定する場合は、セッション名を変更することが可能である。<br> | |||
<syntaxhighlight lang="php"> | |||
<?php | |||
session_name("phpsession"); | |||
session_start(); | |||
?> | |||
<?php | |||
print('現在のセッション名は'.session_name().'です。'); | |||
?> | |||
</syntaxhighlight> | |||
<br><br> | |||
== セッションIDの取得と変更 == | |||
セッションIDは自動的にランダムな値が設定されるが、<code>session_id</code>関数を使用して、任意の値に設定することもできる。<br> | |||
<br> | |||
string session_id([string id]) | |||
session_id関数は、カレントのセッションIDを取得・設定するために使用される。 | |||
パラメータ: | |||
id カレントのセッションIDを置換する。その際、session_start関数の前に呼ぶ必要がある。 | |||
セッションハンドラによっては、セッションIDとして使用できる文字に制限がある場合がある。 | |||
例えば、ファイルによるセッションハンドラにおいて、セッションIDとして使用できる文字は、a-z、A-Z、0-9に限られる。 | |||
戻り値: | |||
session_id関数は、カレントのセッションのセッションID・カレントセッションが存在しない(カレントのセッションIDが存在しない)場合、 | |||
空文字列""を返す。 | |||
<br> | |||
<code>session_id</code>関数を引数無しで使うことで現在のセッションIDを取得することができる。<br> | |||
また、引数に値を指定する場合は、セッションIDを指定した値に変更できる。<br> | |||
<br> | |||
ただし、セッションIDは、セッションハイジャック等を防ぐためにも簡単な値を設定してはならない。<br> | |||
したがって、任意でセッションIDを指定しない方がよいと考えられる。<br> | |||
<syntaxhighlight lang="php"> | |||
<?php | |||
session_start(); | |||
?> | |||
<?php | |||
if(!isset($_COOKIE[session_name()])) | |||
{ | |||
print('初回の訪問です。セッションを開始します。'); | |||
} | |||
else | |||
{ | |||
print('セッションは開始しています。<br>'); | |||
print('クッキーは '.$_COOKIE[session_name()].' です。<br>'); | |||
print('session_id関数は '.session_id().' です。<br>'); | |||
} | } | ||
?> | ?> |