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>