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(或者当您的服务器发出请求时它拒绝服务器提供的会话 ID ,或类似的)。

如果文件是本地文件,那么问题在于您显然有一个名为red=no&whatever=c8ec2afe8bb7388175f2065f1cb0c868的文件。实际上,在这种情况下,我怀疑该文件可能被命名为red=no。如果不是,则&符号正在扔掉东西。逃脱它,你没事。

或者不要使用这种可怕的文件名。

于 2012-06-23T15:12:07.933 回答