-4

次の内容のPHPファイルがあります。

<?php
$myflash  = $_GET["flashname"];
$mytitl   = $_GET["titlname"];
$myqgif   = $_GET["flashgif"];
$mytxt    = $_GET["txtname"];
?>

<?php
include('01.txt');
?>

正しく表示されます。しかし、私が以下を使用するとき:

<?php
include('<?php echo $mytxt; ?>.txt');
?>

表示されません。

4

4 に答える 4

3
?php
include('<?php echo $mytxt; ?>.txt');
?>

は有効なPHP構文ではありません...内部のコード<?php ?>はすでにPHPコードです。これ以上phpタグを入れないでください。

あなたはただ使用したい:

<?php
    include($mytxt . '.txt');
?>

PHPコード用のphpタグがあり、次に1つのincludeステートメントがあります。そのステートメント内で、2つの文字列($mytxtおよび.txt)を連結して、含めるファイル名を形成します。

入力を含める前に、必ずサニタイズしてください。誰かがGETパラメータを簡単に変更でき、スクリプトはinclude必要なファイルを変更できます。インクルードする前に、ファイルが目的の場所にあることを確認してください。

于 2012-08-06T18:56:43.363 に答える
2

文字列内でエコーを行うことはできません。代わりに、文字列の連結を探しています。

include( $mytxt . '.txt');

ローカルファイルインクルード(LFI)の脆弱性$mytxtを回避するには、サニタイズする必要があることに注意してください。

于 2012-08-06T18:56:21.370 に答える
0
<?php
include('<?php echo $mytxt; ?>.txt');
?>

すでにPHPです。phpタグを再度開く必要はありません。

<?php
include($mytxt . ".txt");
?>
于 2012-08-06T18:57:18.363 に答える
0

include関数が引数をPHPコードではなくファイル名とパスとして取得しているため、何も表示されません。

あなたが入れecho $mytxt;て、それがうまくいくfoobar.phpと言うならばinclude('foobar.php');。しかし、現在の形では無意味です。

その01.txt内容(01.txtファイル)がコードにロードされているため、が表示されています。主にPHPコードではないため、ブラウザにダンプされます。インクルードは、他のPHPスクリプトをコードで実行するために使用する必要があります。

于 2012-08-06T18:57:21.610 に答える