我想在加载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://...
的情况下进行修复,因为目前我无法选择该网站。
答案 0 :(得分:1)
将include
与输出缓冲一起使用。 file_get_contents正在从文件系统中读取文件,它不会使用PHP来分析它。使用http://
时它工作的唯一原因是因为Web服务器正在为文件而不是文件系统提供服务。
ob_start();
include "ajax.php";
$result = ob_get_clean();