2. PHP3および4でのセッションの実装
php3 にはセッションのようなものはありませんが、それが必要です。どうすればよいでしょうか?心配しないでください。これを行ってくれる人はたくさんいます。最も有名なのは phplib です。海外でもダウンロードできますし、国内のほとんどのPHPサイトからダウンロードできます。最初にやらなければならないことは、phplib と php3 を一緒に動作させることです。この機能を実現するには、まず phplib をインストールする必要があります。フォローしてください、とても簡単です (次のメソッドは win2000+php3.0.16+apache1.3.12+phplib7.2c+MySQL3.23.21 for win32 に渡されます) PHPlib の最も基本的な機能には、ユーザー認証、セッション管理、権限、データベースの抽象化が含まれます。
PHPlib を使用してセッション関数を実装するにはどうすればよいですか?
1. まず、phplibを解凍すると、中に「php」というディレクトリがありますので、このディレクトリをApacheのインストールディレクトリにコピーします。著者のマシンを例に挙げます。私の apache は d:/apache ディレクトリにインストールされています。上記の「php」ディレクトリを d:a/pache にコピーし、phplib の下の Pages ディレクトリ内のファイルとディレクトリを d の下にコピーしました。 :/apache/htdocs、ディレクトリ自体を含めないように注意してください。 phplib クラス ライブラリは、システムに応じて初期化する必要があります。このファイルには、いくつかの基本パラメータが含まれています。マシンの実際の状況に応じて変更できます。 d:/apache/php/prepend.PHP3 ファイル内のプログラムを次のように変更します:
if (!isset($_PHPLIB) または !is_array($_PHPLIB)) {
$_PHPLIB["libdir"] = "d:/apache/php/" //これを phplib 下の PHP ディレクトリのパスに変更します
;
}
次に、d:/apache/PHP/local.inc ファイルを次のように変更します。
class DB_Example extends DB_Sql {
var $Host = "localhost";//MySQL データベースのホスト名
var $Database = "テスト" //データベース名
;
var $User = "root" //データベースユーザー名
;
var $Password = "";//データベースユーザーのパスワード
}
最後のステップは、解凍された phplib ディレクトリのスタッフ ディレクトリにある create_database.MySQL ファイルを実行して、初期テーブルを生成することです。 phplib がどのように機能するかを説明しましょう。phplib を使用するすべてのページは、まず phplib を実行するために必要なクラス ライブラリ ファイルを見つける必要があります。これを指定すると、phplib 配布パッケージに prepend.php3 ファイルが含まれます。 auto_prepend の「d:/apache/php/prepend.php3」 (引用符付き) を使用すると、各ページに phplib クラス ライブラリが自動的にインクルードされます。phplib クラス ライブラリが配置されているディレクトリを include 変数に追加することもできます。もちろん、最も簡単な方法は PHPlib の絶対パスを指定することです。これは移植性が低すぎるため、良い考えではありません。
2 番目のステップでは、phplib を使用するすべてのページで、最初に初期化のために page_open 関数を呼び出す必要があります。これにより、現在または将来的に状態を保存する必要があることが PHPlib に伝えられます。典型的な
page_open の例は次のとおりです:
page_open(array("sess" =>"Example_session"));
?>
phplib は Cookie を使用して状態情報を保存するため、ページ コンテンツがブラウザに出力される前に、page_open() 関数を呼び出す必要があります。「Oops - SetCookie.ヘッダーが送信された後に呼び出されます。これは、page_open() の前にブラウザーに出力された内容を示します。空行は見つけるのが非常に難しいため、特に注意する必要があります。一般的なエラーは、 と ? > の間にあります。タグ 空白行が出力される local.inc ファイルと prepend.PHP3 ファイルに空白行が含まれているかどうかを確認する必要があります。これも非常にエラーが発生しやすい場所です。エラーの可能性を減らすために、次のように初期化プログラムを書くことができます:
page_open(array("sess" =>"Example_session"));
?>
.....
3 番目のステップは、具体的な使用法です。
ユーザーが Web サイトにアクセスすると、ユーザーのセッションがすぐに開始されます。ユーザーのブラウザが Cookie をサポートしている場合、セッション ID が作成され、Cookie に配置されます。この一意の ID は、PHP3 によってランダムに生成され、使用されます。 md5 で暗号化されます。この Cookie はセッションが終了するとユーザーのハード ドライブに書き込まれないため、セッション Cookie と呼ぶ必要があります。ユーザーのブラウザが Cookie をサポートしていない場合、セッション ID は URL チェーンに組み込まれ、暗号化されるため、盗むことはできません。セッション ID には、ユーザーが認証されているか、認証の有効期限、ユーザーの権限、および当社の便宜のために必要となるその他の情報などのユーザー関連情報が保存されます。セッションは実際にはユーザー セッションのプロセスです。実際、セッションはユーザー登録を追跡するために使用されるだけでなく、保存したい情報をユーザーが後でアクセスするページに送信するために使用することもできます。もちろん、それらのページが PHPLIB を使用していることが前提となります。方法は非常に簡単で、変数を登録した後は、セッションが終了するまで後続のページでその変数を使用できます。方法:
register( "variable_name");
最初のページ:
page_open(array("sess" =>"Example_session"));
$sess->register( "first"); //変数名の前に $ を追加する必要はないことに注意してください
if (iset($firstname)) {
$first = $firstname
}
.....
ページ_クローズ();
?>
2ページ目:
page_open();//セッションを開始します
echo $first;// 効果を確認してください
page_close();//ステータス情報を保存する
?>
変数を登録した後、ページが最終的に page_close() 関数を呼び出すと、各セッション変数がデータベースに書き戻されます。 page_close() 関数を呼び出すのを忘れた場合、変数はデータベースに書き戻されず、予期しない結果が発生します。変数が使用され、不要になった場合は、次の関数を呼び出して変数を削除できます:
ページ_クローズ();
?>
PHPLIB 7.0 は、セッション データをデータベース、共有メモリ、または LDAP に保存できるストレージ構造を使用します。 PHPLIB はデータベース クラスを使用するため、ステータス情報を保存するために Oracle8、MySQL、postgresql などのデータベースを選択できます。
true