【问题标题】:file_get_contents return all php codefile_get_contents 返回所有 php 代码
【发布时间】:2015-10-03 19:38:15
【问题描述】:

我想在加载 index.php 时向某个文件发送 POST 请求。我使用此代码:

$query = http_build_query(array('ajax' => 'gwonline', 'session' => $current_session));
$contextData = array ( 
                'method' => 'POST',
                'header' => "Content-Type: application/x-www-form-urlencoded\r\n".
                            "Connection: close\r\n".
                            "Content-Length: ".strlen($query)."\r\n",
                'content'=> $query );
$context = stream_context_create (array ( 'http' => $contextData ));
$result =  file_get_contents(PATH::Includes . 'ajax.php', false, $context);
$result_decoded = json_decode($result, true);
echo '<div id="gwonline">' . ($result_decoded['isonlinestr'] ?: '<span class="fa fa-circle" style="color:orange"></span> Unavailable') . '</div>';

问题是,$result 以获取 PHP 代码而不是实际打印的文件结束。我如何在不将网站更改为 http://... 的情况下修复它,因为目前它不是我的选择。

【问题讨论】:

  • file_get_contents() 只是加载一个文件。它不执行它,解析它或其他什么。只是文字。

标签: php file-get-contents


【解决方案1】:

include 与输出缓冲一起使用。 file_get_contents 正在从文件系统中读取文件,它不会使用 PHP 来分析它。当您使用 http:// 时它起作用的唯一原因是因为 Web 服务器正在提供文件,而不是文件系统。

ob_start();
include "ajax.php";
$result = ob_get_clean();

【讨论】:

  • 如何将includePOST 请求一起使用?
  • 我需要它来获取参数,所以它知道返回什么。
  • 哦,我明白你在做什么了。如果您正在加载本地文件,所有这些都是不必要的。您不应该设置标题和方法。脚本中设置的任何内容都将传递给包含的文件,因此请设置您需要的内容,更好的是:为此创建一个函数或类。
  • 我可以在运行时在 $_POST 中设置一些东西吗?
猜你喜欢
  • 2014-09-14
  • 2015-09-10
  • 2013-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-11
  • 1970-01-01
相关资源
最近更新 更多