3

序言:我的应用程序启用了 mod_rewrite,并且我有 index.php 页面,该页面基于 Request_URI 下载各种页面并将它们打印为页面内容。

问题:File() 或 File_get_contents() 函数非常适合下载我的其他应用程序页面。但是,一旦我尝试使用它来下载启用会话的页面,我就会开始遇到问题。

主要问题是,当我尝试从我下载的页面将现有会话 ID 传递给 url 时,例如

  $url = "http://localhost/EmplDir/AdminMenu.php";
  return implode('',file($url. "&" . session_name() . "=". session_id()));

我的页面从不加载(或 file() 从不加载内容)。我怀疑我应该在这里使用 curl 函数,但它有太多选择。我建议使用哪个curl 选项使可下载页面了解当前的 PHP 会话会有所帮助。

PS 以上似乎适用于 Windows 和 Linux。

4

3 回答 3

3

您没有使用 ? 将查询字符串与 URL 的其余部分分开。

尝试

return file_get_contents($url. "?" . session_name() . "=". session_id());

您还需要确保服务器不使用session.use-only-cookies配置设置。

脚本没有理由不看到查询字符串并对其采取行动,您可以通过编写一个仅执行 var_dump($_GET) 的脚本并如上所述请求它来说服自己。如果您在输出中看到查询参数,那么您只需要调试您的脚本以查看为什么在给定会话 ID 的情况下它的行为不符合预期。

注意:我假设您希望从与您的应用程序相同的域中请求文件,否则将会话 ID 用于远程站点并没有多大意义

于 2009-02-25T16:37:04.190 回答
2

如果你的脚本没有改变任何超全局变量,你可以只包括它:

ob_start();
include $_SERVER['DOCUMENT_ROOT'].'/EmplDir/AdminMenu.php';
return ob_get_clean();
于 2009-02-25T18:04:17.240 回答
0

session_namesession_id为您提供当前的脚本会话;不是删除服务器。你需要使用能理解http的东西。Curl 可以,或者您可以使用类似SimpleBrowser的东西,它完全模拟了浏览器。

于 2009-02-25T17:13:46.147 回答