> PHPのセッション~PHP TUTORIAL~: PHP入門 : – ネットワークエンジニアチュートリアル

PHPのセッション~PHP TUTORIAL~: PHP入門 :

スポンサーリンク

無料でプログラマへ!30歳までなら無料でプログラミング学校に通うことが出来ます。下の画像をクリックして無料相談会でGO!

【IT派遣テクノウェイブ】

PHPのセッション

ウェブサイト全体のさまざまなページでデータにアクセスできるようにするもう1つの方法は、PHPセッションを使用することです。

セッションは、登録されたセッション変数とその値が格納されているサーバー上の一時ディレクトリにファイルを作成します。このデータは、その訪問中のサイトのすべてのページで利用可能になります。

一時ファイルの場所は、session.save_pathというphp.iniファイルの設定によって決まります。セッション変数を使用する前に、このパスを設定しておく必要があります。

セッションが開始されると

  • PHPはまず、その特定のセッションの一意の識別子を作成します。これは、3c7foj34c3jj973hjkop2fc937e3443のような32個の16進数のランダムな文字列です。
  • PHPSESSIDと呼ばれるCookieは、ユーザーのコンピュータに自動的に送信され、固有のセッション識別文字列を格納します。
  • ファイルは指定された一時ディレクトリー内のサーバー上に自動的に作成され、sess_sess_3c7foj34c3jj973hjkop2fc937e3443という接頭部が付いた一意のIDの名前が付いています。

PHPスクリプトがセッション変数から値を取得しようとすると、PHPは自動的にPHPSESSIDクッキーから一意のセッション識別子文字列を取得し、その一時ディレクトリ内でその名前を持つファイルを探し、両方の値を比較することによって検証を行うことができます。

ユーザーがブラウザを失った後、またはサイトを離れた後にセッションが終了すると、サーバーは一定の時間(通常は30分)後にセッションを終了します。

PHPセッションの開始

PHPセッションは、session_start()関数を呼び出すことで簡単に開始できます。この関数は、セッションがすでに開始されているかどうかを最初に確認し、開始されていない場合は起動します。ページの先頭にsession_start()を呼び出すことをお勧めします。

セッション変数は$ _SESSION []と呼ばれる連想配列に格納されます。これらの変数は、セッションの存続期間中にアクセスできます。

次の例では、セッションを開始し、セッション中にページが訪問されるたびにインクリメントされるcounterという変数を登録します。

セッション変数がすでに設定されているかどうかを確認するには、isset()関数を使用します。

<?php
   session_start();
   
   if( isset( $_SESSION['counter'] ) ) {
      $_SESSION['counter'] += 1;
   }else {
      $_SESSION['counter'] = 1;
   }
	
   $msg = "あなたは一ページ目を"  $_SESSION['counter'];
   $msg .= "ひらきました";
?>

<html>
   
   <head>
      <title>Setting up a PHP session</title>
   </head>
   
   <body>
      <?php  echo ( $msg ); ?>
   </body>
   
</html>

こうなる

あなたは一ページ目を 1 ひらきました 

PHPセッションの破棄

PHPセッションは、session_destroy()関数で破棄することができます。この関数は引数を必要とせず、1回の呼び出しですべてのセッション変数を破棄することができます。単一のセッション変数を破棄したい場合は、unset()関数を使用してセッション変数の設定を解除することができます。

ここでは、単一の変数を設定解除する例を示します。

<?php
   unset($_SESSION['counter']);
?>

ここにすべてのセッション変数を破壊する呼び出しがあります。

<?php
   session_destroy();
?>

自動セッションを有効にする

php.iniファイルでsession.auto_start変数を1に設定できる場合、ユーザーがサイトにアクセスしたときにstart_session()関数を呼び出してセッションを開始する必要はありません。

クッキーなしのセッション

ユーザーが自分のPCにクッキーを保存することを許可しない場合があります。したがって、セッションIDをブラウザに送信する別の方法があります。

また、セッションが開始された場合に定義される定数SIDを使用することもできます。クライアントが適切なセッションCookieを送信しなかった場合は、session_name = session_idという形式になります。それ以外の場合は、空の文字列に展開されます。したがって、URLに無条件に埋め込むことができます。

 

次の例は、変数を登録する方法と、SIDを使用して別のページに正しくリンクする方法を示しています。

<?php
   session_start();
   
   if (isset($_SESSION['counter'])) {
      $_SESSION['counter'] = 1;
   }else {
      $_SESSION['counter']++;
   }
   
   $msg = "You have visited this page ".  $_SESSION['counter'];
   $msg .= "in this session.";
   
   echo ( $msg );
?>

<p>
   To continue  click following link <br />
   
   <a  href = "nextpage.php?<?php echo htmlspecialchars(SID); ?>">
</p>

こうなる

You have visited this page 1in this session.
To continue click following link 

htmlspecialchars()は、 XSS関連攻撃を防止するためにSIDを印刷する際に使用することができます。3ヶ月10万円で受講できる転職特化型Ruby実践研修【ポテパンキャンプ】

前のページ⑯PHPクッキー

次のページ⑱PHPを使用して電子メールの送信

 

スポンサーリンク

ネットワークエンジニアになりたければ下記から無料相談会に参加!
なんと無料で授業を受けれてエンジニアになれます

投稿日:2017-09-26 更新日:

執筆者: