1

別のphpファイルA.PHPからphpファイルB.PHPをロードしようとしていますが、$_GET経由で変数を送信したいと考えています。両方のファイルが同じディレクトリに保存されます。私はいくつかの方法を試しました:

1st) 私のファイルに直接書き込みます:

require (__FILE__)."\b.php?action=1";

エコーを実行した結果は次のようになります: C:\xampp\htdocs\pfc\html\a.phpb.php?action=1 なので、正しくありません!

それで、私は試しました:

require (__FILE__)."\..\b.php?action=1"; INCORRECT again

2番目)私が設定した別のPHPで:

define('MAINDIR',dirname(__FILE__) . '\\');
define('DL_DIR',MAINDIR . 'pfc\\html\\');   // Also tried with a normal '/'

そして、私のファイルでは、次のことを行います。

require DL_DIR."b.php?action=1";  I also tried with include, but I guess this has nothing to do.

この場合、echo を実行すると、C:\xampp\htdocs\pfc\html\b.php が表示されるので、正しいです。

ただし、プログラムを実行すると、次のエラーが発生します。

警告:require (C:\xampp\htdocs\pfc\html\b.php?action=1): ストリームを開くことができませんでした: C:\xampp\htdocs\pfc\html\a.php にそのようなファイルまたはディレクトリはありません101行目

警告: require (): C:\ に含めるための 'C:\xampp\htdocs\pfc\html\b.php?action=1' を開くことができませんでした (include_path='.;C:\xampp\php\PEAR') xampp\htdocs\pfc\html\a.php 101行目

明らかに、ファイル内にファイルを見つけることはできません。だから私はこのバージョンで「..\」をもう一度試しました...間違っています!

3番目) 方程式にリアルパスを追加する

require realpath(dirname(__FILE__)."\b.php?action=1");

そして、再び、私は得る:

警告: require (): C:\xampp\htdocs\pfc\html\HTML_menu_supervisor.php の 101 行目のファイル名を空にすることはできません

警告:require (): 101 行目の C:\xampp\htdocs\pfc\html\HTML_menu_supervisor.php のインクルード (include_path='.;C:\xampp\php\PEAR') のために '' を開くことができませんでした

何が起こっているのか本当にわかりません。誰か助けてください!そして、前もって感謝します:-)

4

3 に答える 3

2

私の知る限り、requireまたはを介してパラメーターを渡すことはできませんinclude。したがって、あなたrequireの s は実際には存在しないファイルを探していると思います (おそらくb.php?action=1.

必要な変数を設定し、それらをrequired ファイルで参照するだけです (それらが同じスコープにあると仮定します)。

于 2013-12-11T05:48:58.143 に答える
0

インクルードにパラメーターを取得する必要はありません。

URLが次のようになっている場合

localhost/myfunction.php?action=1

myfunction.php:

    require (__DIR__)."\..\b.php";

ファイルを含めることができ、GET変数をすぐに取得できます。

インクルードは、インクルード ファイルのコピー & ペーストです。

したがって、次のb.phpようになります。

$allowedGetValues = array(1,2,3,4);


if(isset($_GET['action']) && array_key_exists($_GET['action'],$allowedGetValues) ){
    .. 
}
于 2013-12-11T05:53:11.347 に答える