我将用一个简单的例子来解释:
myphp1.php:
$html = get_html("myphp2.php", "parameter1"); //pseudocode
myphp2.php
<html>
<head>
</head>
<body>
<?php
echo $_POST["parameter1"];
?>
</body>
</html>
所以基本上$html
将保存myphp2.php html输出。我能这样做吗?
答案 0 :(得分:3)
如果您要解释php脚本并保存输出,则应发送新请求。
使用PHP5,您可以在不卷曲的情况下执行此操作:
$url = 'http://www.domain.com/mypage2.php';
$data = array('parameter1' => 'value1', 'parameter2' => 'value2');
$options = array(
'http' => array(
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($data),
),
);
$context = stream_context_create($options);
$html = file_get_contents($url, false, $context);
var_dump($html);
答案 1 :(得分:1)
使用file_get_contents发送HTTP POST请求并不难,实际上:正如您猜测的那样,您必须使用$ context参数。
在PHP手册中给出了一个例子,在这个页面上:HTTP context选项(引用):
详细示例
$url = "http://example.com/submit.php";
$postdata = http_build_query(
array(
'var1' => 'some content',
'var2' => 'doh'
)
);
$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata
)
);
$context = stream_context_create($opts);
$result = file_get_contents($url, false, $context);
基本上,您必须使用正确的选项创建一个流(该页面上有完整列表),并将其用作file_get_contents的第三个参数 - 仅此而已; - )
作为旁注:一般来说,要发送HTTP POST请求,我们倾向于使用curl,它提供了很多选项 - 但是流是PHP的好东西之一,没有人知道...坏...