「PHPの基礎 - セッション」の版間の差分
(ページの作成:「== 概要 == PHPにおいて、セッションを利用する方法を記載する。<br> <br><br> == セッションの開始 == セッションとは、クッキーは…」) |
編集の要約なし |
||
46行目: | 46行目: | ||
print('セッションは開始しています。<br>'); | print('セッションは開始しています。<br>'); | ||
print('セッションIDは '.$_COOKIE["PHPSESSID"].' です。'); | print('セッションIDは '.$_COOKIE["PHPSESSID"].' です。'); | ||
} | |||
?> | |||
</syntaxhighlight> | |||
<br><br> | |||
== セッション変数の書き込みと読み込み == | |||
セッションを開始することで、サーバに管理する値(セッション変数と呼ぶ)を複数保存することができる。<br> | |||
クライアントごとに様々な値が書き込まれるため、セッションIDを識別子として、クライアントを識別することができる。<br> | |||
<br> | |||
セッション変数に値を書き込む場合は、定義済みの変数$_SESSIONを使用する。<br> | |||
$_SESSION[セッション変数名] = 値 | |||
<br> | |||
例えば、セッション変数visitedに値を書き込む場合、以下のように記述する。<br> | |||
$_SESSION["visited"] = 1; | |||
<br> | |||
以下の例では、セッションを開始して、セッション変数visitedに値を保存している。<br> | |||
同一のWebページにアクセスするごとにセッション変数の値を増加させて、前回アクセスした日時も表示している。<br> | |||
<syntaxhighlight lang="php"> | |||
<?php | |||
session_start(); | |||
?> | |||
<?php | |||
if(!isset($_SESSION["visited"])) | |||
{ | |||
print('初回の訪問です。セッションを開始します。'); | |||
$_SESSION["visited"] = 1; | |||
$_SESSION["date"] = date('c'); | |||
} | |||
else | |||
{ | |||
$visited = $_SESSION["visited"]; | |||
$visited++; | |||
print('訪問回数は'.$visited.'です。<br>'); | |||
$_SESSION["visited"] = $visited; | |||
if(isset($_SESSION["date"])) | |||
{ | |||
print('前回の訪問日時は'.$_SESSION["date"].'です。<br>'); | |||
} | |||
$_SESSION["date"] = date('c'); | |||
} | } | ||
?> | ?> |
2021年3月5日 (金) 15:52時点における版
概要
PHPにおいて、セッションを利用する方法を記載する。
セッションの開始
セッションとは、クッキーは管理する値をクライアントに保存するのに対して、セッションは管理する値をサーバに保存する。
クライアントには、どのセッションを使用しているかを識別するためのセッションIDのみをクライアントに保存する。
一般的に、セッションIDをクッキーの値としてクライアントに保存する。(セッションを使用する場合、クッキーも同時に使用する)
また、重要なデータを扱う場合はセッションを使用する。
クライアントから初めてアクセスがある場合、session_start
関数を使用して、新しいセッションを作成してセッションを開始する必要がある。
bool session_start() session_start関数は、セッションを作成する。 もしくは、リクエスト上でGET、POST、クッキーにより渡されたセッションIDに基づき、 現在のセッションを復帰する。 戻り値: 常にTRUEを返す。
セッションが開始されていない状態でsession_start
関数が呼ばれる場合、新しいセッションを開始してセッションIDを割り当てる。
セッションIDは、クライアントにクッキー名PHPSESSID
で保存される。
(クライアントがクッキーを利用できない場合、次のセクションに記載する)
既にセッションが開始されているクライアント(既にセッションIDがクッキーとして保存されているクライアント)からアクセスがある場合、
session_start
関数を実行しても新たにセッションを開始せずに、サーバに保存されているセッション変数を利用できるように準備する。
以下の例では、セッションを開始して、クライアントにセッションIDがクッキーとして保存しているか確認している。
初めてアクセスする場合、セッションIDが割り当てられて、クライアントは自動的にクッキーを利用してセッションIDを保存する。
次回以降は、クッキー名PHPSESSIDがクライアントから送信されて、新たにセッションは開始されずに、以前のものを利用する。
また、セッションIDにはランダムな値が設定される。
<?php
session_start();
?>
<?php
if(!isset($_COOKIE["PHPSESSID"]))
{
print('初回の訪問です。セッションを開始します。');
}
else
{
print('セッションは開始しています。<br>');
print('セッションIDは '.$_COOKIE["PHPSESSID"].' です。');
}
?>
セッション変数の書き込みと読み込み
セッションを開始することで、サーバに管理する値(セッション変数と呼ぶ)を複数保存することができる。
クライアントごとに様々な値が書き込まれるため、セッションIDを識別子として、クライアントを識別することができる。
セッション変数に値を書き込む場合は、定義済みの変数$_SESSIONを使用する。
$_SESSION[セッション変数名] = 値
例えば、セッション変数visitedに値を書き込む場合、以下のように記述する。
$_SESSION["visited"] = 1;
以下の例では、セッションを開始して、セッション変数visitedに値を保存している。
同一のWebページにアクセスするごとにセッション変数の値を増加させて、前回アクセスした日時も表示している。
<?php
session_start();
?>
<?php
if(!isset($_SESSION["visited"]))
{
print('初回の訪問です。セッションを開始します。');
$_SESSION["visited"] = 1;
$_SESSION["date"] = date('c');
}
else
{
$visited = $_SESSION["visited"];
$visited++;
print('訪問回数は'.$visited.'です。<br>');
$_SESSION["visited"] = $visited;
if(isset($_SESSION["date"]))
{
print('前回の訪問日時は'.$_SESSION["date"].'です。<br>');
}
$_SESSION["date"] = date('c');
}
?>