php_PHP チュートリアルでの許可アルゴリズムの実装
許可設計
おそらく次のモードがあります:
ユーザー+グループ+ロール+権限
ユーザー+グループ+権限
ユーザー+ロール+権限
ユーザー+権限
最近、他の人の設計方法では、追加、参照、削除、変更などの権限値を表すのに「整数」が使用されており、それぞれ 1、2、4、8 の整数に置き換えられています。それぞれのアプローチには違いがありますが、例は次のとおりです。
1. 2 の n 乗を使用して、1、2、4、8、16... などの権限値のセットを形成します。ユーザーの権限値はサブセット内の整数の合計です。 7=1+2+4,5=1+4 のように。データベースから特定の権限を持つユーザーを取得する場合は、最初にこれらの権限値を追加し、合計が k であると仮定して、次に、ユーザーを判断する場合は、テーブルから * を選択し、ユーザー権限値 = k を選択します。 ? パーミッション値 k を取り出し、それぞれ k&1、K&2、K&4、k&16 を使用します。これが true の場合、「&」の右側の整数に等しいパーミッションがあることを意味します。たとえば、k&4 が true の場合、ユーザーは権限テーブルで値 4 の権限を持ちます。
2. 素数 2、3、5、7、11... を使用して権限セットを作成します。ユーザーの権限は、210 = 2*3*5* などの整数の積になります。 7. この方法は非常に興味深いと思いますが、主要な要素を分解する方法に問題があります。ただし、ユーザーが持っている権限の間には包括的な関係がある可能性があると彼は考えています。これは確かに事実ですが、これは複雑すぎてエラーが発生しやすいため、アクセス許可を「アトミック」にするのが最善だと思います。つまり、ユーザーが削除する権限を持っていても参照する権限を持っていない場合、ユーザーは物事を見ることができないため、削除操作を行うことができません。この矛盾は、ユーザーに権限を与えるときに閲覧権限を与えることです。
3. 整数を使用する代わりに、「ベクター テーブル」メソッドを使用して (必ずしも正しいとは限りません)、ユーザーの追加、参照、変更、削除など、考えられるすべての権限を特定の順序で配置します。許可値は、100010100001....01 のような 100 桁の固定長の文字列です。左からの各ビットは、そのような許可がある場合は 1 になり、そうでない場合は、このビットの値は 1 になります。それは 0 です。作者がユーザー許可値を 100 桁に固定した理由は、アップグレードの問題によるものだと思いますが、これは十分科学的ではないと思います。ユーザー許可値の長さは 0 未満であるべきだと思います。権限の数。例:
権限ランキング表: 追加、参照、変更、削除。ユーザー A は追加と参照の権限を持っているため、権限の値は 11 です。ユーザー B は参照と変更の権限を持っているため、権限の値は 011 です。ユーザー C は、参照する権限と、削除された権限の権限値は 0101 です。この設計の利点は、他の権限が権限テーブルに追加されても、ユーザー テーブルやロール テーブルに影響を与えないことです。
4. バックグラウンド管理で権限を 2 つのカテゴリに分割しました。各列は、参照、追加、変更、削除に対応します。ユーザーはシステムに入ります。その後、まず列の権限があるかどうかを判断し、次に操作権限があるかどうかを判断します。まず、アクセス ページのパスを取得し、次にディレクトリを分解します。ユーザーが所有するディレクトリ権限に対応します。このディレクトリがユーザーの権限に含まれている場合、そのディレクトリが (データベースから取得された) 管理ディレクトリ配列内にある場合は、このディレクトリに入る権限を持ちます。それ以外の場合は、このディレクトリに入る権限がありません。 . ただし、操作権限を判断するのは少し面倒に思えますが、ファイルの追加、参照、変更、削除のルールは基本的に同じですが、違いは追加機能と削除機能を統合したことです。たとえば、ファイル名は proAddEdit.php です。幸いなことに、ファイルを変更するときに渡す追加のパラメーター ID があることに気づきました。そのため、この方法は現在では時代遅れであると思われるため、正規表現を使用して解決しました。それは、オブジェクト指向の考え方や、システム開発におけるフレームワーク システムの使用には適応しません。
上記は私の大まかな理解と説明です。間違いがある場合は、専門家の意見をいただければ幸いです。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPは動的なWebサイトを構築するために使用され、そのコア関数には次のものが含まれます。1。データベースに接続することにより、動的コンテンツを生成し、リアルタイムでWebページを生成します。 2。ユーザーのインタラクションを処理し、提出をフォームし、入力を確認し、操作に応答します。 3.セッションとユーザー認証を管理して、パーソナライズされたエクスペリエンスを提供します。 4.パフォーマンスを最適化し、ベストプラクティスに従って、ウェブサイトの効率とセキュリティを改善します。

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

PHPの中心的な利点には、学習の容易さ、強力なWeb開発サポート、豊富なライブラリとフレームワーク、高性能とスケーラビリティ、クロスプラットフォームの互換性、費用対効果が含まれます。 1)初心者に適した学習と使用が簡単。 2)Webサーバーとの適切な統合および複数のデータベースをサポートします。 3)Laravelなどの強力なフレームワークを持っています。 4)最適化を通じて高性能を達成できます。 5)複数のオペレーティングシステムをサポートします。 6)開発コストを削減するためのオープンソース。

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

PHPはWeb開発およびコンテンツ管理システムに適しており、Pythonはデータサイエンス、機械学習、自動化スクリプトに適しています。 1.PHPは、高速でスケーラブルなWebサイトとアプリケーションの構築においてうまく機能し、WordPressなどのCMSで一般的に使用されます。 2。Pythonは、NumpyやTensorflowなどの豊富なライブラリを使用して、データサイエンスと機械学習の分野で驚くほどパフォーマンスを発揮しています。

まだ人気があるのは、使いやすさ、柔軟性、強力なエコシステムです。 1)使いやすさとシンプルな構文により、初心者にとって最初の選択肢になります。 2)Web開発、HTTP要求とデータベースとの優れた相互作用と密接に統合されています。 3)巨大なエコシステムは、豊富なツールとライブラリを提供します。 4)アクティブなコミュニティとオープンソースの性質は、それらを新しいニーズとテクノロジーの傾向に適応させます。
