【问题标题】:PHP: file_get_contents not giving me output I expect :(PHP:file_get_contents 没有给我我期望的输出:(
【发布时间】:2015-05-30 17:51:04
【问题描述】:

这是我非常简单的代码:

session_name("miz");
session_start();
include_once 'codeFragments/sessions.php';

if(!isset($_SESSION['user']))
{
    header('Location: login.php?e=1');
    exit;
}

//include('simple_html_dom.php');

$homepage = file_get_contents('http://localhost:8888/Ryan/Mart/1/cPanel.php?p=create_member');


echo $homepage;exit;

问题是,我总是获取 login.php 页面的内容,而不是获取 cPanel.php 的内容,即使我已登录。

当我尝试这个时: $homepage = file_get_contents('cPanel.php?p=create_member');

它说:打开流失败:没有这样的文件或目录

我到底做错了什么?我仔细检查了,这个文件和 cPanel.php 文件在同一个目录中。

【问题讨论】:

  • 反对票是怎么回事?
  • 我猜反对票告诉你RTFM。
  • 由于您调用的文件显然返回了错误,我们需要该文件内容。
  • @RolandoIsidoro FM 也帮不上忙。
  • 您的示例表明:您对脚本中使用的所有技术(包括 PHP)没有计划。基本上这没问题,因为这是一个问答网站。问题是您的示例没有显示:解决问题所需的信息。这就是为什么-1

标签: php file-get-contents


【解决方案1】:

您可能已登录,但访问“远程”文件的不是您;你的服务器是。而且你的服务器没有登录。

与其使用file_get_contents,不如考虑使用cURL(虽然我个人会全力以赴发送手动HTTP请求!)并在标题中传递"Cookie: ".session_name()."=".session_id();。这实际上会使服务器劫持您自己的会话以保留您提供的身份验证。

【讨论】:

  • 您可以使用stream_context_create() 指定标题。 curl 扩展名很好,是的。但是,在极少数情况下确实需要这样做。
  • 你有一个文件,实际上,字面意思是cPanel.php?p=create_member?没想到:p
  • 所以是参数部分有问题,从?开始...是吗?
  • file_get_contents 在本地文件上仅获取该文件的内容。它根本不处理它们,所以你只需要得到原始的 PHP。但是,使用 localhost 调用它会获取结果。
  • 他们为什么要远程访问这个文件而不是重定向到用户面板的这一部分?当正常行为是将用户重定向到所需页面时,获取该页面的内容并在当前页面上显示它们有什么意义
【解决方案2】:

即使我已登录。

我不确定你是不是真的。

但是可以通过 PHP 处理真实的登录。之后,您应该能够访问正确的数据。

两个可能有用的例子:

Using Authentication And file_get_contents()

file_get_contents from url that is only accessible after log-in to website

【讨论】:

  • 是的,Niet the Dark Absol 就在下面。谢谢回复:)
猜你喜欢
  • 1970-01-01
  • 2017-07-20
  • 1970-01-01
  • 2013-12-14
  • 2013-02-13
  • 1970-01-01
  • 2018-08-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多