このサイトはPHPを独習する際に作成したスクリプトを基に、プログラム言語初心者のための入門講座として作成しました。PHPは初心者に親しみやすく、解りやすいプログラム言語です。これからプログラムを学ぶ人の参考になればと思います。
セッションってなに?
セッションとは会員IDとパスワードを使ってログインする場合などによく使われる仕組みです。一度個人データを入力すると、他のページに移動してもそのデータがどこかに保存されているのですね。 SNSやポータルサイトなど、ログインが必要なサイトではほとんどがこのセッションを使っていると言っていいでしょう。 ところで、セッションは私が最も理解できなかった部分の一つです。 「サーバーとクライアントでデータをやり取りするもの」「データを記録してページが変わっても変数の内容を維持するためのもの」というのはなんとなく理解できたのですが、それならファイルやクッキーを使えばいいと思っていたのです。 それに数冊の本を読んでもまるで理解ができなかったし、詳しく書かれてはいなかったのです。 ところが、やはりセッションには優れた機能が色々とあり、使い方もけっして難しくはないのです。
クッキー・ファイル・セッションの比較
ページを移動したり、ブラウザを終了してもデータが消えないようにする方法として、クッキー・ファイル・セッションの3つがあるのですが、これを比べて見ましょう。
クッキー : クライアントのコンピュータにテキストファイルを作り、そこにデータを書き込みます。 ファイル : サーバーにテキストファイルを作り、そこにデータを書き込みます。 セッション : クライアントにIDを残し、サーバーにデータのファイルを作るのです。
クライアントのIDはクッキーを使うのですが、クッキーは意識することなく作成できます。書き方はクッキーに似ています。
セッション: $_SESSION['word'] = $word; //セッションにデータを入れる $word = $_SESSION['word']; //セッションのデータを読み込む クッキー: setcookie("word", $word, time()+60*10); //クッキーにデータを入れる $word = $_COOKIE["word"]; //クッキーのデータを読み込む
これでサーバーのコンピュータのどこかにwordのデータがファイルとして保存されるのです。保存場所は通常"/temp"なのですが、ローカルでPHPを動かす場合"C:WINDOWSTemp"に保存されます。ファイル名は sess_726d93f63d99a00ed7c18645648c8cae こんな感じです。 同時にクライアント側にはIDがクッキーとして保存されます。このIDをもとにサーバー側のセッションファイルを読み出しているのです。
ところで、クッキーではその記憶時間を time()+60*10 をとして設定しているのにセッションでは時間の設定がありません。通常はブラウザを終了するとセッションデータは消えてしまいます。php.ini の設定を変更することで、ブラウザ終了後もデータを残すことはできるのですが、初期設定ではデータなくなるのです。 php.ini での設定は900行あたりにある次の部分を変更します。秒単位での設定ができます。
session.cookie_lifetime = 0
セッション・スタート
ところで、セッションはいきなり始めることはできません。セッション開始を宣言するのですね。このsession_start はPHPファイルの一番初めに記述します。<html>よりも前です。下記のように1行あけるのもエラーになります。(正確にはWarning:警告です)
1 : ↓ //1行あける 2 : <?php 3 : session_start(); 4 : ?> 5 : <html>
開始があれば終了もあるわけで、2つの関数があります。
session_start(); //セッションデータを初期化 セッションを行う場合は必ず必要 session_unset(); // 全てのセッション変数を開放 session_destroy(); //セッションに登録されたデータを全て破棄
これら unset や destroy はログアウトなどの時に使用されているのです。
|