ホームページ php教程 php手册 セッション管理と認証に PHPLIB を使用する (再掲)

セッション管理と認証に PHPLIB を使用する (再掲)

Jun 21, 2016 am 09:13 AM
page quot session

セッション

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 { //まだ何か }




このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

SpringBootセッションでセッションタイムアウトを設定する方法 SpringBootセッションでセッションタイムアウトを設定する方法 May 15, 2023 pm 02:37 PM

Springboot プロジェクトの本番環境のセッションアウト タイムアウトで問題が見つかりました。問題の説明は次のとおりです: テスト環境では、application.yaml を変更することでセッションアウトが構成されていました。別の時間を設定してセッションアウト構成を確認した後、有効期限がリリース時に直接 8 時間に設定され、運用環境に到着しました。しかし、正午にお客様から、プロジェクトの有効期限が短く設定されており、30分操作がないとセッションが期限切れになり、再度ログインが必要になるというフィードバックをいただきました。開発環境の扱いの問題を解決します。springboot プロジェクトには Tomcat が組み込まれているため、プロジェクト内の application.yaml で設定されたセッションアウトが有効になります。本番環境: 本番環境リリースは

セッション失敗を解決する方法 セッション失敗を解決する方法 Oct 18, 2023 pm 05:19 PM

セッション障害は通常、セッションの有効期間の期限切れまたはサーバーのシャットダウンによって発生します。解決策: 1. セッションの有効期間を延長する; 2. 永続ストレージを使用する; 3. Cookie を使用する; 4. セッションを非同期的に更新する; 5. セッション管理ミドルウェアを使用する。

PHP セッションのクロスドメイン問題の解決策 PHP セッションのクロスドメイン問題の解決策 Oct 12, 2023 pm 03:00 PM

PHPSession のクロスドメイン問題の解決策 フロントエンドとバックエンドの分離の開発では、クロスドメイン要求が標準になっています。クロスドメインの問題に対処するときは、通常、セッションの使用と管理が必要になります。ただし、ブラウザーのオリジンポリシーの制限により、デフォルトではセッションをドメイン間で共有できません。この問題を解決するには、いくつかの技術と方法を使用して、セッションのクロスドメイン共有を実現する必要があります。 1. ドメイン間でセッションを共有するための Cookie の最も一般的な使用法

更新後にPHPセッションが消えた場合はどうすればよいですか? 更新後にPHPセッションが消えた場合はどうすればよいですか? Jan 18, 2023 pm 01:39 PM

更新後に PHP セッションが消える問題の解決策: 1. 「session_start();」を通じてセッションを開きます; 2. すべてのパブリック設定を PHP ファイルに書き込みます; 3. 変数名は配列の添字と同じにすることはできません。 4. phpinfoでセッションデータの保存パスを確認し、ファイルディレクトリ内のsessioが正常に保存されているか確認してください。

セッションphpのデフォルトの有効期限は何時間ですか? セッションphpのデフォルトの有効期限は何時間ですか? Nov 01, 2022 am 09:14 AM

セッション PHP のデフォルトの有効期限は 1440 秒、つまり 24 分です。つまり、クライアントが 24 分を超えて更新されない場合、現在のセッションは期限切れになります。ユーザーがブラウザを閉じると、セッションは終了し、セッションは存在しなくなります。

Springboot2のセッションタイムアウト設定が無効になる問題の解決方法 Springboot2のセッションタイムアウト設定が無効になる問題の解決方法 May 22, 2023 pm 01:49 PM

問題: 今日、プロジェクトで設定タイムアウトの問題が発生し、SpringBoot2 の application.properties への変更が反映されませんでした。解決策:server.* プロパティは、SpringBoot によって使用される埋め込みコンテナーを制御するために使用されます。 SpringBoot は、ServletWebServerFactory インスタンスの 1 つを使用してサーブレット コンテナのインスタンスを作成します。これらのクラスは、server.* プロパティを使用して、制御されるサーブレット コンテナ (tomcat、jetty など) を構成します。アプリケーションが war ファイルとして Tomcat インスタンスにデプロイされる場合、server.* プロパティは適用されません。それらは当てはまりませんが、

Redis 共有セッション アプリケーションに SMS ログインを実装する方法 Redis 共有セッション アプリケーションに SMS ログインを実装する方法 Jun 03, 2023 pm 03:11 PM

1. セッションに基づく SMS ログインの実装 1.1 SMS ログインのフローチャート 1.2 SMS 検証コード送信の実装 フロントエンド リクエストの説明: リクエスト メソッドの説明 POST リクエスト パス /user/code リクエスト パラメータ 電話 (電話番号) 戻り値 バックエンド インターフェイスなし実装: @Slf4j@ ServicepublicclassUserServiceImplextendsServiceImplimplementsIUserService{@OverridepublicResultsendCode(Stringphone,HttpSessionsession){//1。次の場合は携帯電話番号を確認します。

JavaScript Cookie と PHP Cookie の違いは何ですか? JavaScript Cookie と PHP Cookie の違いは何ですか? Sep 02, 2023 pm 12:29 PM

JavaScriptCookies JavaScript Cookie の使用は、設定、購入、手数料、その他の情報を記憶および追跡する最も効果的な方法です。訪問者のエクスペリエンスを向上させるために必要な情報やウェブサイトの統計。 PHPCookieCookie は、クライアント コンピューターに保存され、追跡目的で保持されるテキスト ファイルです。 PHP は HTTP Cookie を透過的にサポートします。 JavaScript Cookie はどのように機能しますか?サーバーは、訪問者のブラウザに Cookie の形式でデータを送信します。ブラウザは Cookie を受け入れることができます。存在する場合、それは訪問者のハードドライブにプレーンテキストレコードとして保存されます。さて、訪問者がサイト上の別のページに到達すると、

See all articles