从php文件调用另一个php文件,同时给它一个参数

时间:2013-09-19 04:17:22

标签: php post

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

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

2 个答案:

答案 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的好东西之一,没有人知道...坏...