0

私のphpコードには、別のphpファイルから取得する必要のあるセクションがあります。私はこれを達成しようとしました:

include "teams.php?id=".$matchid;

そしてteams.phpで

$matchid = $_GET['id'];
echo "MATCH ID IS ".$matchid;

問題は、teams.php?id="。$matchidを直接開くと、一致IDが正常に表示されることです。

ただし、インクルードが機能しません-元のページのソースコードを確認しました-コードが挿入されていません。私がやりたいことをする方法はありますか?そのファイルに2つの変数を渡している間に、別のファイルからphpコードを取得する必要があります

4

4 に答える 4

0

問題は、include関数を呼び出したときにそのページをブラウザーにロードしていないため、追加する変数がURLクエリパラメーターとして処理されていないことです。実際には、teams.php内のすべてを取得し、その位置にある他のファイル(teams.phpを含むファイル)にダンプしているだけです。

何かをteams.phpに効果的に渡したい場合は、インクルードの前に変数を宣言するだけです。

http://php.net/manual/en/function.include.phpをチェックすると、すべてが明らかになります。

于 2013-02-23T02:02:58.583 に答える
0

それはインクルードの仕事ではありません。ファイルをインクルードすると、そのコードは、インクルードされているのと同じファイルに記述されているかのように実行されます。したがって、インクルードファイルに変数が含まれている場合、teams.phpには変数$ matchidが含まれ、渡す必要はありません。インクルードの呼び出し方法が正しくありませんでした。これを行うと、phpは現在のディレクトリで「teams.php?id = 0」というファイルを検索します(0を$ matchid値に置き換えます)。このファイルは存在しません。URIではなく、「teams.php」が存在します。URLの前に「http://」を付けることでURLを指定できますが、結果は、phpソースを読み取れると期待されるため、teams.phpのコードで機能します。

于 2013-02-23T02:03:50.157 に答える
0

問題

問題は実際に含まれているもの$_GETに関連しています:

URLパラメーターを介して現在のスクリプトに渡される変数の連想配列。(...)

そして、URLを介してスクリプトに渡さ$matchidないでください...そして、この場合はすべきではありません。

解決

しかし、方法があります。PHPはグローバル変数をファイル間で分離しないため、1つのファイルで使用可能な変数は、含まれているファイルでも使用できます。

  • ファイル番号 1:

    // Assume $matchid is defined
    include "teams.php";
    
  • ファイル番号 2(含まれているもの):

    // No need to redefine $matchid - it was defined in the first file
    echo "MATCH ID IS ".$matchid;
    

また、ファイルの先頭に必ず追加<?phpしてください(終了タグは必要ありません)。それ以外の場合は、テキストとして扱われ、実行されません。

于 2013-02-23T02:12:35.053 に答える
0

あなたはこのようにすることができinclude "include "teams.php?id={$matchid}";ます $matchid = filter_input(INPUT_GET, 'id', FILTER_SANITIZE_STRING); echo "MATCH ID IS {$matchid}";

このコードを使用する場合は、Injectsからも安全になります。これを高く評価していただければ幸いです。

于 2013-02-23T02:17:43.137 に答える