序言:我的应用程序启用了mod_rewrite,我有index.php页面,它根据Request_URI下载vaious页面并将它们打印为页面内容。
问题:File()或File_get_contents()函数非常适合下载我的其他应用页面。但是一旦我尝试使用 下载会话启用的页面 ,我就会遇到问题。
主要问题是当我尝试将现有的会话ID从我下载的页面传递给url时,例如
$url = "http://localhost/EmplDir/AdminMenu.php";
return implode('',file($url. "&" . session_name() . "=". session_id()));
我的页面从不加载(或file()从不加载内容)。 我怀疑我在这里使用curl函数,但它有太多选项。 我的建议是卷曲选项,以使可下载页面了解当前的PHP会话将会有所帮助。
P.S。对于Windows和Linux,上述情况似乎都是正确的。
答案 0 :(得分:3)
您没有使用?
将查询字符串与其余网址分开尝试
return file_get_contents($url. "?" . session_name() . "=". session_id());
您还需要确保服务器不使用session.use-only-cookies配置设置。
没有理由为什么脚本不应该看到查询字符串并对其进行操作,您可以通过编写一个只执行var_dump($ _ GET)并按上述方式请求的脚本来说服自己。如果在输出中看到查询参数,那么您只需调试脚本以查看为什么在给定会话ID的情况下它不会按预期运行。
注意:我假设您要从与您的应用程序相同的域请求文件,否则使用远程站点的会话ID不会产生太多的 ense。
答案 1 :(得分:2)
如果您的脚本没有改变任何superglobal variables,您可以只包含它:
ob_start();
include $_SERVER['DOCUMENT_ROOT'].'/EmplDir/AdminMenu.php';
return ob_get_clean();
答案 2 :(得分:0)
session_name
和session_id
为您提供当前的脚本会话;不是删除服务器。你需要使用理解http的东西。 Curl会这样做,或者你可以使用SimpleBrowser之类的东西来完全模仿浏览器。