ホームページ >バックエンド開発 >PHPチュートリアル >php が 2 回インクルードすると、最初のインクルード内の変数は無効になります。

php が 2 回インクルードすると、最初のインクルード内の変数は無効になります。

WBOY
WBOYオリジナル
2016-06-23 14:24:01975ブラウズ

php

ディレクトリ構造
+ root
Index.php
config.php
+c
Index.php の内容

root/config.php
116477f2b3304afdaff40898d13212db

root/index.php の内容
74ad2d93b7800b2ab695df66de2d9a1e

root/c/ の内容Index.php
include "../index.php";
?>

root/index.php にアクセスすると
jquery 1.4 が返されます

root/c/index.php にアクセスすると
が返されます 注意:変数: H:softwaredevphpxampphtdocsphptestindex.php の 3 行目のシェル


すみません、変数を 2 回含めると無効になるのはなぜですか?正しいアプローチは何でしょうか?
皆さんありがとうございます

ディスカッション(解決策)への返信

まず、解析シーケンスは次のとおりです

1. ファイルパスは絶対パスですか? はい、含まれており、解析は終了します。いいえ、次のステップに進みます。
2. ファイル パスは相対パスですか (「../index.php」と同様) はい、include_path をスキップして相対パスを解析します。いいえ、次のステップです。
PS: 相対パスの基点は常に「現在の作業ディレクトリ」です。つまり、スクリプト ファイルが存在するディレクトリではなく、このディレクトリでスクリプトを実行します。
たとえば、`php /var を実行したとします。 /root /index.php` の /www では、「現在の作業ディレクトリ」は /var/www/ ではなく /root であり、/var/www は
current_script_dir です。
3. php.ini の include_path (「.:somepath:current_script_dir」など)。 DEFAULT_DIR_SEPARATOR 定数 (ここでは「:」) に従って処理対象リストを分割します
「.」 (現在の作業ディレクトリ)、「somepath (カスタマイズしたディレクトリ)」、「current_script_dir」
これらの後に含まれるファイル名を追加します道を一つずつ試してください。

したがって、あなたの質問は次のようになります

#访问root/c/index.php<?phpinclude "../index.php";  #执行第二步,include进/root/index.phpinclude "config.php";    #执行第三?,当前工作目录为/root/c,current_script_dir也为/root/c,#估计你也没有自定义include_path,所以尝试包含/root/c/config.php,没有这个文件print $shell['jquery'];#Undefined variable?>


これは私の理解です、皆さんは私に連絡して修正することを歓迎します

いいえ!
ファイル root/c/config.php がない限り、root/config.php は確実にロードされます
どのファイルがロードされているかを確認するには print_r(get_include_files()); を使用できます

Java を使用する必要があります Java の考え方を使用して php を作成します

Java の考え方を使用して php を作成します。必要なのはクラスだけです

皆さん、ありがとうございます。この問題は Baidu で解決されたことがわかりました

http://zhidao.baidu.com/question/1638100265932728980.html?quesup2&oldq=1

ありがとう @Anew_G、私は初心者なので、わかりません あなたの分析は正しいですか? 正しいようです
皆さん、この問題はBaiduで解決されました

http://zhidao.baidu.com/question/ 1638100265932728980.html?quesup2&oldq=1


ありがとう @Anew_G 初心者なので、あなたの分析が正しいかどうかわかりませんが、正しいようですので、共有します

そうです。 Register Globals は使用しないのが最善です

理由: http://php.net/manual/zh /security.globals.php

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