ホームページ  >  記事  >  バックエンド開発  >  Ucenter ソース コード分析 --index.php

Ucenter ソース コード分析 --index.php

WBOY
WBOYオリジナル
2016-06-23 13:39:58963ブラウズ

1: ucenter をインストールした後、ブラウザのアドレス バーに ucenter ドメイン名を入力すると、index.php がデフォルトで読み込まれます。パラメータを指定せずにドメイン名を入力すると、admin にジャンプします。 php をルートディレクトリに置きます。コードを見ると、

$m と $a は、index.php と admin.php によって受け取られるパラメーターです。 $m はインスタンス化されるクラスをコード化し、$a は呼び出されるメソッドをコード化します。たとえば、$m=user,$a=login は /control/user.php,$m=new usercontrol(),$ をロードします。 m->onlogin();

次のステップは、モデルのリリース バージョンの下にあるファイルを導入することです。存在する場合は、/release/ の下にあるファイルが最初に導入されます。存在しない場合は、/model の下にあるファイルが導入されます。 $m と $a が存在する場合、次のコードを使用して動的呼び出しが行われます。コードからは、m、app、frame、user のタイプは次の 1 つだけであり、これらはすべてこの /control 下の複数のファイルに対応していることがわかります。

次に、対応する制御ファイルをロードし、クラス名を取得して、クラスをインスタンス化します。メソッドを呼び出す前に、まずクラスに関数があるかどうかを確認し、関数がある場合は最初に $method=on.$a メソッドを呼び出します。は存在しません。_call($method) を使用して呼び出してください。

下の図からわかるように、m は以下の対応するオブジェクトにインスタンス化できます。 $aの値はクラスチェンジ以下のメソッドで実装されます。 $m=app、$a=add という小さなテストを行うことができます。テスト結果は右のとおりです。なぜ -1 が返されるのかについては、/control/app.php の onadd() メソッドを参照してください。

index.php の背後にある addslash 関数の処理は、一般に PHP6 以降を処理するためのセキュリティ対策です。 php6 では MAGIC_QUOTES_GPC が非推奨になっているため、サーバーは $_POST、$_GET、$COOKIE からのデータをエスケープしません。このように、一重引用符 '、二重引用符 "、/ の特殊文字によって SQL インジェクションの問題が発生しないように、addslashes を使用して手動でエスケープする必要があります。

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