0

次のコードがあります。

$location .= 'red=no&'.session_name() . "=". session_id();
$content = file_get_contents($location);
echo $content;

実行すると、ブラウザに注意が表示されます。ただし、次のように変更すると、次のようになります。

$location .= 'red=no';
$content = file_get_contents($location);
echo $content;

すべて正常に動作します (ブラウザにコンテンツが表示されます)。

また奇妙なことに、最初の例 (url) の $location 変数の値を表示し、ブラウザーのアドレス行に手動で貼り付けると、コンテンツが表示されます。したがって、私のブラウザはこの URL を使用できますが、使用できfile_get_contentsません。

どのように説明できるか知っている人はいますか?

4

1 に答える 1

0

これは意味がありません。ファイルがリモートで、$location が URL の場合、リモート サーバーが $_GET を介してセッション ID を取得していない (または、サーバーが要求したときにサーバーから提供されたものを拒否する) と考えられます。 、またはそのようなもの)。

ファイルがローカルの場合、問題は、明らかにred=no&whatever=c8ec2afe8bb7388175f2065f1cb0c868という名前のファイルを取得していることです。実際、この場合、ファイルの名前はred=noであると思われます。そうでない場合、アンパサンドは物事を台無しにしています。それをエスケープし、あなたは大丈夫です。

または、そのような恐ろしいファイル名を使用しないでください。

于 2012-06-23T15:12:07.933 に答える