0

我想要实现的是:

我有一个拥有完整源代码访问权限的网站。该网站中的页面是使用速度模板创建的,我有一个带有以下表单的页面。

<h3>form data</h3>
<form action="$portalPath/test" method="post">
    <input type="text" name="text" value="$!self.getTextFromFormData()" />
    <input type="submit" />
</form>

现在从另一个用 php 编写的应用程序,我想向这个页面发出一个 http 请求并下载一个文件。(这是一个 html 文件)。为此,我从另一个 Web 应用程序中编写了以下代码:

$url = 'http://localhost/portal/default/test';
$data = array('filename.html');

$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);
$result = file_get_contents($url, false, $context);

var_dump($result);

但结果显示了我访问的模板的 html 源(即测试),而不是我要下载的 html 文件。我想要做的是发出一个 http 请求以自动将文件名输入到表单中,并使表单自动提交请求并处理它,并下载所需的 html 文件作为结果。我不知道这是否可能,或者如果可能,这是否是正确的方法。如果这可以使用 curl 完成,那就更好了。任何想法都将受到高度赞赏。

4

1 回答 1

1

请参阅:如何使用 PHP 发布外部表单?

因此,从引用的 URL:

<?php
  $url = 'http://localhost/portal/default/test';
  $fields = array(
    'text'=>urlencode($value_for_field_text),
  );

  //url-ify the data for the POST
  foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
  rtrim($fields_string,'&');

  // Initialize curl
  $ch = curl_init();

  //set the url, number of POST vars, POST data
  curl_setopt($ch,CURLOPT_URL,$url);
  curl_setopt($ch,CURLOPT_POST,count($fields));
  curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);

  //execute post
  $result = curl_exec($ch);

  // Results of post in $result
?>
于 2013-06-20T01:46:22.573 回答