この情報は、米国アドビシステムズ社が提供している情報をもとにローカライズし、作成したものです。日本語環境での動作保証はしておりませんのでご了承ください。

概要

Web 開発者がWeb アプリケーションを設計する際、URL から変数を送信せずに、アプリケーション内で共有する必要に迫られることがあります。例えば、カレンダー Web アプリケーションの場合、訪問者はタイムゾーンの確認を求められることがあります。その後、アプリケーション内の全てのページで指定されたタイムゾーンの時刻が表示されます。

このような機能は、セッション変数によって実現できます。Web 開発者にとってセッション変数は便利な機能ですが、セッション変数用のコードが Adobe Dreamweaver から自動で生成されることはありません。この文書では、セッション変数の概要と、セッション変数を扱うための手順を、Dreamweaver がサポートするサーバーモデルごとに説明しています。

動的サイトの構築準備

この文書を理解し活用するためには、ASP や ColdFusion などのサーバーモデルに関する知識が必要です。また、以下の概念を理解し、動的サイトの開発をサポートするバージョンの Dreamweaver を使用している必要があります。詳細については、Dreamweaver マニュアルまたはヘルプシステムの関連セクションを参照してください。

  • 動的サイトの構築準備
  • 動的ページの作成

セッション変数の動作

セッション変数により、訪問者の情報を変数に格納することができ、訪問者ごとに定められたセッション期間中は、アプリケーションからアクセスすることができます。

セッション変数には以下のような特徴があります :

  • セッション変数の期間が未指定の場合、サイトから移動してから 20 分後に無効になります。
  • 20 分間操作が行われなかった場合にも、セッション変数は無効になります。また、Web ブラウザーを閉じた場合にも無効になります。
  • 訪問者のブラウザー設定で、Cookie を受け入れない場合、セッション変数は動作しません。
  • セッション変数は、同一 Web サーバーの単一ディレクトリ内においてのみ有効です。
  • セッション変数に格納される情報は、訪問者ごとに異なります。他の訪問者のセッション変数にアクセスすることはできません。

通常、Web アプリケーションのフォームに入力された情報から、セッション変数のデータを取得します。フォームフィールドの値からセッション変数が指定されます。この文書の例では、フォーム要素の情報から、セッション変数を指定しています。Dreamweaver には、ASP.NET を除くすべてのサーバーモデルを対象に、生成されたセッション変数をページに追加するメニュー項目がありますが、セッション変数に値を割り当てる機能はありません。セッション変数の値は、ソースコード内で手動で割り当てる必要があります。

ASP、ColdFusion、JSP または PHP アプリケーションでセッション変数を作成する

注意:

注意 : ASP.NET の例は他のサーバーモデルとは大きく異なります。通常、ASP.NET では従来の HTML フォームではなく Web フォームを利用します。ASP.NET サーバーモデルを使用している場合は、ASP.NET のサンプルを参照してください。

  1. ASP、ColdFusion、JSP または PHP の Web サイトを定義します。

    注意:

    ここでは PHP を例にして説明しています。サーバーモデルに応じてファイルの拡張子やコードを書き換えてください。

  2. 定義したサイト内に動的ページを  3 つ作成します。

    • first.php
    • second.php
    • third.php

    注意:

    注意 : 別のページに移動してもセッション変数が維持されることを確認するため、ページを 3 つ作成します。

  3. first.php 内に、テキストフィールドと送信ボタンを含む form 要素を配置し、それぞれプロパティインスペクターまたはコードビューから以下の属性を指定します。

    • form タグ : action 属性を「second.php」、method 属性を「post」とします。
    • テキストフィールド : name 属性を「txtFirstName」とします。
  4. second.php をコードビューで開き、html タグよりも上に以下のコードをコピー&ペーストします。コピーするコードはサーバーモデルによって異なります。このコードにより、セッション変数が生成され、フォームに入力された情報が保持されます。

    • ASP (VBScript)
      <%session("sessFirstName")=Request.Form("txtFirstName")%>
    • ASP (JavaScript)
      <%Session("sessFirstName")=String(Request.Form("txtFirstName"))%>
    • ColdFusion
      <cfset Session.sessFirstName = #Form.txtFirstName#>
      セッション変数を使用するには、サイトルートに Application.cfm ファイルを配置する必要があります。Application.cfm ファイルには以下のコードを記述する必要があります。
       <CFAPPLICATION NAME="Name" SESSIONMANAGEMENT="Yes">

      注意 : UNIX システムでは、ファイル名の大小文字を区別します。ファイル名先頭の A は必ず大文字にしてください。

    • JSP
      <%session.setAttribute("sessFirstName", request.getParameter("txtFirstName"));%>

      以下のコードもまた動作しますが、最新の Java 仕様ではサポートが廃止されています :
      <%session.putValue("sessFirstName", request.getParameter("txtFirstName"));%>
    • PHP
      <?php session_start(); session_register("sessFirstName"); $sessFirstName = $HTTP_POST_VARS['txtFirstName']; ?>

      Windows のブラウザーで PHP エラーが発生する場合、PHP のインストールにセッションデータ用の有効な保存ディレクトリがありません。このパラメータによって、httpd.conf ファイル同様に PHP.ini ファイルの session.save_path がコールされます。ディレクトリの保存場所は以下のように設定可能です。

      session.save_path = c:\php\sessiondata

      PHP の設定によっては、セッションに関連するすべてのページで、セッション管理を手動で有効にする必要があります。各ページの上部に以下のコード列を配置します :
      <?php session_start();?>

      各ページで session_start() ファンクションをコールせずに、php.ini ファイルで session.auto_start オプションを実行させることによって自動的にセッションを開始することができます。セッション処理に対する PHP 設定の詳細は、Session Handling with PHP 4 (英語)を参照してください。
  5. second.php を開いたまま、ウィンドウ/バインディングを選択し、バインディングパネルを開きます。「+」アイコンから「セッション変数」を選択します。セッション変数ダイアログボックスで name フィールドに sessFirstName と入力して「OK」をクリックします。

  6. バインディングパネルに表示されるセッション変数アイコンを展開します。ドキュメントウインドウに sessFirstName アイコンをドラッグします。セッション変数の内容がこのページに書き込まれます。

  7. third.php を開き、手順 4. と 5. を繰り返します。

  8. 3 つのページを全て保存し、サーバーにアップロードして動作を確認します。正しく動作しない場合は、フォーム要素やセッション変数のスペルに誤りが無いか確認してください。セッションアイコンは、各ページごとにバインディングパネルに表示されます。

ASP.NET でセッション変数を作成

  1. ASP.NET Web サイトを定義します。

  2. サイト内に以下の aspx ファイルを作成します。

    • first.aspx
    • second.aspx

    first.aspx には ASP.NET Web フォームを配置し、first.aspx 自身にポストしてから second.aspx にリダイレクトします。

    注意:

    注意 : 2 ページ目、3 ページ目、4 ページ目、とその後続くページからセッション変数が利用できることを確認するために、2 つのページを作成します。セッション変数と類似のリクエスト変数は、ASP.NET Web フォームから 2 ページ目に持ち越すことができません。

  3. first.aspx の ASP.NET Web フォームには、<asp:textbox> サーバーコントロールと <asp:button> サーバーコントロールをそれぞれ 1 つずつ配置します。テキストボックスの id 属性は「txtFirstName」とします。first.aspx の全体のコードについては、以下のサンプルを参照してください。(C# または VB)

    このコードは、name 属性が txtFirstName の <asp:textbox> サーバーコントロールから値を取得し、sessFirstName というセッション変数を生成します。これはサーバーコントロールに指定された値と同じものです。つまり、このコードはユーザーがフォームに入力した値を含むセッション変数を生成します。

    • ASP.NET (VB) - Page 1 <%@ Page Language="vb"%><script runat="server"> Sub Button1_Click(ByVal s As Object, ByVal e As EventArgs) Session("sessFirstName") = Request("txtFirstName") Response.Redirect("session2.aspx") End Sub</script><html><head><title>Session Page 1</title></head><body> ASP.NET VB session variable and web form example - page 1 <form id="Form1" method="post" runat="server"><p>first name:<asp:TextBox id="txtFirstName" runat="server" /></p><p><asp:Button id="Button1" runat="server" Text="Submit" onClick="Button1_Click" /></p></form></body></html>

    • ASP.NET (C#) - Page 1 <%@ Page Language="C#" %><script runat="server"> void Button1_Click(object sender, EventArgs e) { Session["sessFirstName"] = Request["txtFirstName"]; Response.Redirect("session2.aspx"); }</script><html><head><title>Session Page 1</title></head><body> ASP.NET C# session variable and web form example - page 1<form id="Form1" method="post" runat="server"><p>first name:<asp:TextBox id="txtFirstName" runat="server" /></p><p><asp:Button id="Button1" runat="server" Text="Submit" onClick="Button1_Click" /></p></form></body></html>
  4. second.aspx をコードビューで開き、以下のコードを入力します。このコードにより、セッション変数が書き込まれます。

    • ASP.NET (VB) - Page 2 <%@ Page Language="vb" %>Session Page 2ASP.NET VB session variable and web form example - page 2first name: <%= session("sessFirstName") %>
    • ASP.NET (C#) - Page 2 <%@ Page Language="C#" %>Session Page 2ASP.NET C# session variable and web form example - page 2first name: <%=Session["sessFirstName"]%>
  5. ページを保存し、サーバーにアップロードして動作を確認します。正しく動作しない場合は、フォーム要素やセッション変数のスペルに誤りが無いか確認してください。

追加情報 (Additional information)

セッション変数の詳細は、以下の文書を参照してください。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー