セッション
PHPLIB は、データベース クラスなど、他の多くのことも実行できます。この記事は PHPLIB について簡単に紹介するものです。言及されていないクラスや関数が多数あります。 http://phplib.netuse.de にアクセスすると、その他のヘルプ ドキュメントを入手できます
----------------------------- -- --------------------------------------
テスト環境:標準環境
まずは実のところ、オンライン ショッピングなど、顧客の現在のステータスを保存する必要があるプログラムを Web ページを使用して設計するのは、非常に不便です。プログラマは常にステータス パラメータに直面する必要があります。さまざまなホームページ間を行き来します。顧客の身元認証、選択、現在のステータスなどは、Web ホームページには保存されません。これらのパラメータはユーザー自身で慎重に処理する必要があり、これは非常に危険です。特に変数にユーザー登録情報が含まれており、簡単に盗聴される場合は、 http://url?var1=x1&var2=x2 を使用して、ホームページ間でパラメータを転送します。
PHPLIB は、PHP3 の拡張機能であり、プログラマが対話型の Web サイトを簡単に構築できるように、PHPLIB の最も基本的な機能には、ユーザー認証、セッション管理、およびデータベースの抽象化が含まれます。
PHPLIBをインストールする前に、PHPLIBはCgiモードまたはApacheアドオンモジュールモードで実行できるサーバーにインストールする必要があります。 PHP3 のバージョンは 3.0.5 以降である必要があります。そうでない場合は、コンパイル時に --enable-foce-cgi-redirect パラメータを使用することでサポートされます。 PHP3 の設定では、track_vars を有効に設定する必要があります。同時に、PHPLIB は MySQL、Oracle、ODBC、PostgreSQL、および Sybase をサポートする必要があります。
最初のステップでは、システムに応じて PHPLIB クラス ライブラリを初期化する必要があります。これには、いくつかの基本的なパラメーターが含まれており、自分のマシンの条件に応じて変更できます。
PHPLIB がどのように機能するかを説明しましょう。PHPLIB を使用するすべてのページは、まず PHPLIB を実行するために必要なクラス ライブラリ ファイルを見つける必要があります。PHPLIB 配布パッケージには、prepend.php3 ファイルが含まれています。 auto_prepend を prepend.php3 として指定すると、各ページに PHPLIB クラス ライブラリが自動的にインクルードされ、これらのファイルが見つかるように、PHPLIB クラス ライブラリが配置されているディレクトリをインクルード変数に追加することもできます。絶対パスを指定するのは良い考えではありません。
2 番目のステップでは、PHPLIB を使用するすべてのページで、関数 page_open を使用して初期化する必要があります。これにより、現在または将来的に状態を保存する必要があることが PHPLIB に伝えられます。典型的な page_open の例には、認証、セッション、および権限が含まれます:
< ?php
page_open(array( "sess" => "Cms_Session", "auth" => "Cms_Auth", "perm" => " Cms_Perm"));
?>
配列変数 (sess、auth、perm) は、いくつかの状態保存オブジェクトを初期化するために使用されます。 注: PHPLIB の組み込み名 (sess、auth、perm) を使用する必要があります。 local.ini で定義されているように、ページのコンテンツがブラウザに出力される前に page_open 関数を呼び出す必要があります。 (今後認証を使用しない場合は、sess を初期化する必要はありません。) php3 スクリプトは、関連するステータス データをデータベースに書き戻す、page_close() で終了する必要があります。ははは。 。 。
PHPLIB は Cookie を使用して状態情報を保存するため、ページ コンテンツがブラウザに出力される前に page_open() 関数を呼び出す必要があります。ここでのページ コンテンツには、任意の HTML 情報または空白行を指定できます。ヘッダーが送信された後に SetCookie が呼び出されます。これは、page_open() の前にブラウザーに出力された内容を示します。空白行は見つけるのが非常に難しいため、特に注意する必要があります。一般的なエラーは、< ? と ?> の間にあります。 ; タグ 空行が出力される場合は、local.inc ファイルと prepend.php3 ファイルに空行が含まれているかどうかを確認する必要があります。これも非常にエラーが発生しやすい場所です。
PHP は、基本認証方法よりも複雑なアーキテクチャを使用しており、より優れたセキュリティ保証を提供します。
例えば、アクセスを制限したいページの場合、まずpage_openを使って「auth」=>「auth_class」を呼び出し、認証ステータスオブジェクトを初期化した後、顧客がアクセスしたときにステータスを保存します。他のページの場合、ページに入ると、認証システムはまずユーザーの身元が認証されているかどうかを検出します。
ユーザーが初めてページにアクセスし、その ID が認証されていない場合、PHPLIB は登録ウィンドウ (WINDOWS のポップアップ ウィンドウではありません) を呼び出すことを説明しましょう。登録ウィンドウのスタイルは自分で設計できます。ユーザーがユーザー名とパスワードを入力して送信ボタンを押すと、その後の状況が少し複雑になります...
ユーザーのブラウザが JavaScript と互換性がない場合、認証作業はユーザー名とパスワードがサーバーに送信され、そこに保存されているデータと比較されるようなものです。ユーザーのブラウザが JavaScript と互換性がある場合、PHPLIB はまず、ユーザーがページを送信するときに、暗号化に使用されるシード文字列、ユーザー名、パスワードを配置します。チャレンジ文字列は md5 暗号化を使用して暗号化され、暗号化された文字列が生成され、暗号化された文字列とユーザー名がサーバーに送信されます。サーバーはユーザー名と暗号化された文字列を受信すると、データベース内のユーザー名とパスワード、および取得したシードに基づいて md5 操作を実行し、生成された文字列とユーザーが送信した文字列を比較し、それらが一致する場合、ユーザーはID が正しい場合、ユーザーはその後のアクセスを許可されます。この方法の利点は、ユーザーがパスワードを送信する必要がないため、認証がより安全になることです。
セッション管理
実際、セッション管理はID認証に非常に近いもので、ユーザーのブラウザがCookieをサポートしている場合は、この固有のセッションIDが作成されます。 ID は PHP3 によってランダムに生成され、ランダム シード
文字列を使用して md5 で暗号化されます。この Cookie はセッションの完了時にユーザーのハード ドライブに書き込まれないため、セッション Cookie と呼ばれます。も完成しました。ユーザーのブラウザが Cookie をサポートしていない場合、セッション ID は URL チェーンに組み込まれるため、盗むことはできません。セッション ID には、ユーザーが認証されているか、認証の有効期限、ユーザーの権限、および当社の便宜のために必要となるその他の情報などのユーザー関連情報が保存されます。
セッションとは、実際にはユーザーセッションのプロセスです。実際、セッション管理はユーザー登録を追跡するために使用されるだけでなく、ユーザーがその後アクセスするページに保存したい情報を保存するためにも使用できます。もちろん、それらのページが PHPLIB を使用している場合には便利です。方法は非常に簡単で、変数を登録した後は、セッションが終了するまで後続のページでその変数を使用できます。メソッド:
< ?php $sess->register( "variable_name");
ここでの variable_name は変数の値ではなく、変数名を最初に指定することができます。値を割り当てます。特定のページで変数の値を変更でき、後続のページで変数にアクセスすると、変更された値が取得されます。変数の型は多様で、文字列、数値、配列、さらにはオブジェクトの場合もあります。例:
< ?php
$sess->register( "first");
$first = $firstname;
; 注:ここで重要なことです。最初に変数を登録してから、それに値を割り当てることができます。これは非常に効果的です。値を割り当てずにスクリプト内の任意の場所で変数を定義し、後続のページで値を割り当てることができるため、一元的に定義するのに便利です。変数。上の例では、セキュリティ上の理由から、安易に変数に値を代入していないことに気づいたかもしれません。上の例では、変数をチェックしてから、その変数に値を割り当てました。これは良い習慣です。誰もが注意を払う必要があります。
変数を登録した後、最後にページがpage_close()関数を呼び出すと、各セッション変数がデータベースに書き戻されます。page_close()関数を呼び出すのを忘れた場合、変数はデータベースに書き戻されません。そしてエラーが発生することを予測します。変数が使用され、不要になったら、次の関数を呼び出して変数を削除します。 7.0、セッション データをデータベース、共有メモリ、または LDAP に保存できるストレージ構造を使用します。 PHPLIB はデータベース クラスを使用するため、より多くの選択肢が得られます。
権限管理
権限は認証と切り離せません。ユーザーの身元が確認された後、そのユーザーのレベルと権限を決定できます。もちろん、最初に page_open を呼び出して「perm」オブジェクトを初期化する必要があります。ユーザーの権限を確認するコマンドは次のとおりです:
< ?php
$perm->check(
?>) このコマンドは、ユーザーが指定したレベルを満たしているかどうかを確認します。指定されたレベルは次の範囲内にある必要があります。これは local.inc ファイルに定義されており、さまざまなレベルを自分で定義できます。ユーザーがレベルを満たしていないとしてチェックアウトされた場合。 perm_invalid() 関数が自動的に呼び出されます。独自の perm_invalid 関数を作成できます。
PHPLIB で権限を確認する別の方法は次のとおりです:
< ?php
$perm->have_perm( "permission_level");Have_perm は check 関数とは異なり、true または false を返すだけで、スクリプトを終了しないため、プログラム フローをより適切に制御できます。
< ?php
if ($perm->have_perm( "guest"))
{ //何かをする; }
elseif ($perm->have_perm( "admin"))
{ //何かをするelse; }
else { //まだ何か }