この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:2
ページ更新者:guest
更新日時:2017-08-10 11:07:47

タイトル: $_SERVER

セッションを参照することでサーバからクライアント毎の情報を参照できる。

■セッションの仕組み

クライアント毎にIDが割り振られる。

IDを基にどのクライアントがどの情報を保持しているか判別する。

(実装レベルではID云々は意識する必要なし)

 

■PHPでのセッション情報取得方法

PHPでは$_SESSION変数を使用してクッキーの制御を行う。

セッションの開始は以下の通り。

    session_start()

変数の参照方法は以下の通り。

    $_SESSION[キー名]

変数の設定方法は以下の通り。

    $_SESSION[キー名] = 値

セッションの破棄は以下の通り。

    session_destroy();

実際の使い方は以下の例を参照。

 

【index.php】

<html>

    <body>

        <form method="GET" action="testSession.php">

            <!-- テキストボックス -->

            <input type="text" name="save"/>

            <!-- 保存ボタン -->

            <input type="submit" value="保存する"/>

        </form>

        <form method="GET" action="testSession2.php">

            <!-- 破棄ボタン -->

            <input type="submit" value="破棄する"/>

        </form>

 

        <?php

        //セッション開始

        session_start();

        //セッションに保存した情報を表示する

        if(@is_null($_SESSION['save'])) { //セッションに情報が無い場合

            print "セッションには何も保存されていません";

        } else { //セッションに情報がある場合

            print "セッションには";

            print $_SESSION['save'];

            print "が保存されています。";

        }

        ?>

    </body>

</html>

 

テキストボックスに文字列を入れて「保存する」ボタンを押す。

 

【testSession.php】

<html>

    <body>

        <?php

        //セッション開始

        session_start();

        //セッションに情報格納

        $_SESSION['save'] = $_GET['save']; 

        print "セッションに情報を保存しました。";

        ?>

    </body>

</html>

もう一度、index.phpを開くと・・・。

 

セッションに情報が格納されていることが確認出来る。
次に「破棄する」ボタンを押す。

【testSession2.php】

<html>

    <body>

        セッションを破棄しました。

        <?php

        session_start();

        session_destroy(); //セッションの破棄

        ?>

    </body>

</html>

もう一度、index.phpを開くと・・・。

 

セッションの情報が破棄されたことを確認できる。

※セッションの保存時間はphp.iniファイルの以下のパラメータで変更できる。(単位:秒)

session.gc_maxlifetime=1440

■セッションの破棄について

    セッションを破棄する際の注意点としては、session_destroy関数のみではなく、$_SESSIONをnullにする必要がある。(//TODO 理由を説明)