ホームページ >バックエンド開発 >PHPチュートリアル >【転送】PHPでのセッションの詳細説明
セッションとは、ユーザーがWebサイトを閲覧する際に、Webサイトに入ってからブラウザを閉じるまでにかかる時間、つまりユーザーがWebサイトの閲覧に費やす時間を指します。上記の定義から、セッションは実際には特定の時間の概念であることがわかります。
一般的に、Webサイトのあるページ内の変数(サーバーサイド変数を指します。以下同じ)は、次のページでは使用できません。セッションで扱うのが簡単です。セッションに登録した変数をグローバル変数として利用できます。このようにして、ユーザー ID 認証、プログラム ステータスの記録、ページ間のパラメーター転送にセッションを使用できます。
PHP3版でセッションを実装するにはどうすればいいですか?
PHP3自体はセッション関数を実装していません。最も有名なのはphplibです。 phplib の最も基本的な機能には、ユーザー認証、セッション管理、権限、データベースの抽象化が含まれます。次に、phplibを使用してセッションを実装する方法を説明します。
1.まずphplibをインストールします(環境はwin2000+php3.0.16+Apache1.3.12+phplib7.2c+mysql3.23.21 for win32です)
まずphplibを解凍します、中に「php」ディレクトリがあるので、このディレクトリをコピーしてくださいApache インストール ディレクトリにコピーします。例: Apache は d:Apache ディレクトリにインストールされており、次に「php」ディレクトリを d:Apache にコピーし、phplib ディレクトリのページ ディレクトリ内のファイルとディレクトリ (ディレクトリ自体を除く) を d:Apachehtdocs にコピーします。
phplib クラス ライブラリは、システムに応じて初期化する必要がある場合があります。これには、マシンの実際の状況に応じて変更できる、いくつかの基本的なパラメーターが含まれています。
d:Apachephpprepend.php ファイル内のプログラムを次のように変更します。
if (!isset($_PHPLIB) or !is_array($_PHPLIB)) {
$_PHPLIB["libdir"] = "d:/Apache / php/"; //phplib配下のphpディレクトリへのパス
}
d:Apachephplocal.incファイルを変更します:
class DB_Example extends DB_Sql {
var $Host = "localhost"; //mysqlのホスト名データベース
var $Database = "test"; //データベース名
var $User = "root"; //データベースユーザー名
var $Password = "1234567";
最後にphplib ディレクトリに移動します。stuff サブディレクトリ内の create_database.mysql ファイルによって初期テーブルが生成されます。
phplib を使用するすべてのページは、まず phplib の実行に必要なクラス ライブラリ ファイルを見つけることができる必要があるため、php.ini で auto_prepend 変数を設定してそれをサポートすることができます。phplib には prepend.php ファイルが含まれており、auto_prepend を " d として指定します。 :/Apache/php/prepend.php" (引用符付き) と指定すると、各ページに phplib クラス ライブラリが自動的にインクルードされます。これらのファイルが見つかるように、phplib クラス ライブラリが配置されているディレクトリを include 変数に追加することもできます。
2. page_open() 関数を呼び出す
phplib を使用するすべてのページでは、初期化のために最初に page_open 関数を呼び出す必要があります。例:
page_open(array("sess" => "Test_Session")) ;
?>
配列変数 (sess) は、一部の状態保存オブジェクトの初期化に使用されます。ここで注意してください: これらの組み込み名は、local.inc で定義されている必要があります。
phplibはCookieを使用して状態情報を保存するため、ページコンテンツをブラウザに出力する前にpage_open()関数を呼び出す必要があります。 PHP スクリプトは、関連するステータス データをデータベースに書き戻す page_close() で終わる必要があります。そうしないと、変数が失われます。
3. 具体的な用途。
変数を登録したら、セッションが終了するまで後続のページでその変数を使用できます。メソッド:
register( "varname"); ?>
ここでの varname は変数値ではなく、変数名を最初に指定してから値を割り当てることができることに注意してください。特定のページで変数の値を変更でき、後続のページで変数にアクセスすると、変更された値が取得されます。変数の型は多様で、文字列、数値、配列などがあります。例:
最初のページ:
page_open(array("sess" => "Test _Session"))
$sess->register( "welcome"); //変数$welcomeを登録します。 $
$welcome="Hello, PHP world!";
……
page_close() ?>
2ページ目:
page_open(); //セッション開始
echo $ welcome;//最初のページに定義されている$welcomeを表示
page_close();//ステータス情報を保存
?>
変数を登録した後、ページが最終的に page_close() 関数を呼び出すと、各セッション変数がデータベースに書き戻されます。 page_close() 関数を呼び出すのを忘れた場合、変数はデータベースに書き戻されず、予期しない結果が生じる可能性があります。変数が使用され、不要になったら、次の関数を呼び出して変数を削除できます。
page_open(array("sess" => "Test _Session"));
……
$sess- >unregister( "variable_name");
……
page_close();
?>
PHP4版ではセッションはどのように実装されているのでしょうか?
PHP4 のセッションもセッション ID を保存するために Cookie に依存し、変数を保存するためにファイル システムを使用します (デフォルト)。したがって、そのセッション変数はオブジェクトを保存できません。もちろん、セッションをデータベースに保存することもできます。
php4 にはセッションに関連する関数が多数あります (詳細については、php.ini の設定を参照してください)。通常、呼び出す必要がある関数は session_start()、session_register()、session_is_registered() の 3 つだけです。
セッションを必要とする各ページの先頭で session_start() 関数を呼び出します。例: