hirokawa Sat Apr 20 19:54:50 2002 EDT Modified files: /phpdoc/ja/reference/session reference.xml Log: update translation Index: phpdoc/ja/reference/session/reference.xml diff -u phpdoc/ja/reference/session/reference.xml:1.2 phpdoc/ja/reference/session/reference.xml:1.3 --- phpdoc/ja/reference/session/reference.xml:1.2 Tue Apr 16 19:58:27 2002 +++ phpdoc/ja/reference/session/reference.xml Sat Apr 20 19:54:50 2002 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- $Revision: 1.2 $ --> +<!-- $Revision: 1.3 $ --> <reference id="ref.session"> <title>セッション処理関数(session)</title> <titleabbrev>セッション</titleabbrev> @@ -74,6 +74,7 @@ <programlisting role="php"> <![CDATA[ <?php +session_start(); if (isset($HTTP_SESSION_VARS['count'])) { $HTTP_SESSION_VARS['count']++; } @@ -99,6 +100,7 @@ <programlisting role="php"> <![CDATA[ <?php +session_start(); // PHP 4.0.6以前の場合は$HTTP_SESSION_VARSを使用して下さい if (!isset($_SESSION['count'])) { $_SESSION['count'] = 0; @@ -114,6 +116,7 @@ <programlisting role="php"> <![CDATA[ <?php +session_start(); // PHP 4.0.6以前の場合は$HTTP_SESSION_VARSを使用して下さい unset($_SESSION['count']); @@ -129,16 +132,30 @@ とが可能で、セッション変数は対応するグローバル変数として回復されま す。PHPは、どのグローバル変数がセッション変数として登録されるのか を知る必要があるため、ユーザは、変数をsession_register()関数で登録 - する必要があります。しかし、$HTTP_SESSION_VARS/$_SESSIONの場合は、 - session_register()を使用する必要はありません。 + する必要があります。しかし、 + <varname>$HTTP_SESSION_VARS</varname>/<varname>$_SESSION</varname> + の場合は、session_register()を使用する必要はありません。 <caution> <para> - $HTTP_SESSION_VARS/$_SESSIONを使用する場合、セッションモジュール - の内部動作を知っているユーザ以外は、 + <varname>$HTTP_SESSION_VARS</varname>/<varname>$_SESSION</varname> + を使用し、<link + linkend="ini.register-globals"><literal>register_globals</literal></link> + を無効とする場合、 <function>session_register</function>, <function>session_is_registered</function>, <function>session_unregister</function>を使用しないで下さい。 </para> + <para> + <link + linkend="ini.register-globals"><literal>register_globals</literal> + </link>を有効にしている場合は、 + <function>session_unregister</function>を使用する必要があります。 + +これは、シリアル化されたセッションデータが戻される時にセッション + 変数がグローバル変数として登録されるためです。 + セキュリティ面と性能面の双方より<link + linkend="ini.register-globals"><literal>register_globals</literal></link> + を無効とすることが推奨されています。 + </para> </caution> <example> <title> @@ -166,8 +183,15 @@ linkend="ini.track-vars"><literal>track_vars</literal></link>と <link linkend="ini.register-globals"><literal>register_globals</literal></link> - が共に有効な場合、グローバル変数と$HTTP_SESSION_VARS/$_SESSIONエン - トリは同じ値へのリファレンスとなります。 + が共に有効な場合、グローバル変数と + <varname>$HTTP_SESSION_VARS</varname>/<varname>$_SESSION</varname> + +エントリは登録済みの変数の同じ値を参照することになります。 + </para> + <para> + +ユーザがセッション変数を登録する際にsession_register()を使用する場合、 + <varname>$HTTP_SESSION_VARS</varname>/<varname>$_SESSION</varname> + +は、セッションのストレージからロードされるまで(すなわち次のリクエ + ストまで)配列内にこれらの変数を有しません。 </para> <para> セッションIDの通知を行うためには次の二つの方法があります。 @@ -191,7 +215,9 @@ セッションIDを直接URLに埋め込みます。 </para> <para> - PHP は、<literal>--enable-trans-sid</literal>を付けてコンパイルされた + PHP は、 + <link linkend="install.configure.enable-trans-sid"> + <literal>--enable-trans-sid</literal></link>を付けてコンパイルされた 場合にこの処理を透過的に行います。 このオプションを有効にした場合、相対 URI はセッションIDを有するように 自動的に変更されます。 @@ -201,8 +227,8 @@ の形式または空の文字列です。 </para> <para> - 次の例は、変数の登録法および SID を用いて他のページに - 正しくリンクする方法のデモです。 + 次の例は、変数の登録法および SID +を用いて他のページに正しくリンク + する方法のデモです。 <example> <title>単一のユーザーに関するヒット数を数える</title> <programlisting role="php"> @@ -221,10 +247,11 @@ <?php # ユーザーがクッキーを使用不可としている場合は、セッションIDを -# 保持するために<?=SID> が必要です。 +# 保持するために<?php echo SID?> (short tagを有効としている場合は +# <?=SID?>も使用可能です)が必要です。 ?> -続けるには、<A HREF="nextpage.php?<?=SID?>">ここをクリック</A>して下さい。 +続けるには、<A HREF="nextpage.php?<?php echo +SID?>">ここをクリック</A>して下さい。 ]]> </programlisting> </example> @@ -232,11 +259,11 @@ <para> PHPのコンパイル時に <link linkend="install.configure.enable-trans-sid"> <literal>--enable-trans-sid</literal></link>を指定した場合には、 - <literal><?=SID?></literal> は必要ありません。 + <literal><?php echo SID?></literal> は必要ありません。 </para> <note> <para> - 相対URLでないものは、外部サイトを指していると仮定されSIDが追加 + +相対URLでないURLは、外部サイトを指していると仮定されSIDが追加 されません。これは、SIDを異なったサーバにもらすことはセキュリティ 上のリスクとなるためです。 </para> @@ -267,6 +294,14 @@ <literal>session.save_path</literal>のパスの深さが2より大きい場 合、ガーベッジコレクションは行われません。 </simpara> + <warning> + <para> + この設定を<filename>/tmp</filename> +(デフォルト)のようにどこか + +らでも読み込み可能なディレクトリのままにしている場合、サーバ上 + +の他のユーザがこのディレクトリのファイルのリストを取得すること + +により、セッションをハイジャックをすることが可能となります。 + </para> + </warning> </listitem> <listitem> <simpara>