0

我将用一个简单的例子来解释:

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 输出。我可以这样做吗?

4

2 回答 2

4

如果您正在寻找解释 php 脚本并保存输出,您应该发送一个新请求。

使用 PHP5,您可以在没有 curl 的情况下执行此操作:

$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);
于 2013-09-19T04:25:07.080 回答
1

实际上,使用 file_get_contents 发送 HTTP POST 请求并不难:正如您所猜测的,您必须使用 $context 参数。

PHP手册中有一个例子,在这个页面:HTTP上下文选项(引用):

详细示例

$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 的优点之一,没有人知道......太糟糕了...... .

于 2013-09-19T04:32:17.373 回答