繁体   English   中英

在 PHP 中使 file_get_contents() session 感知

[英]Making file_get_contents() session aware in PHP

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

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

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

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

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

PS 以上似乎对于 Windows 和 Linux 都是正确的。

您没有用?

尝试

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

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

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

注意:我假设您想从与您的应用程序相同的域中请求文件,否则将您的 session id 用于远程站点没有多大意义

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

ob_start();
include $_SERVER['DOCUMENT_ROOT'].'/EmplDir/AdminMenu.php';
return ob_get_clean();

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM