为什么在 get 变量中使用会话名称和会话 ID 不起作用


Why use of session name and session id in the get variables does not work?

我有以下代码:

$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不能。

有人知道如何解释吗?

没有意义。 如果文件是远程的,并且$location是一个URL,那么我认为正在发生的事情是远程服务器不会通过$ _GET获取会话ID(或者当您的服务器发出请求时,它会拒绝服务器提供的会话ID,或者诸如此类)。

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

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