用php发布数据

时间:2013-02-19 14:01:49

标签: php http post webpage

我想知道如何使用php发布数据,例如从本地php获取输入然后在另一个网页上写入id的输入。我认为那些被称为PHP机器人,但我不太了解这个功能。如果你能告诉我代码,如果可能的话。

UPDATE:为了让它更清晰 - 如何使用PHP“写入”另一个页面上的输入。

1 个答案:

答案 0 :(得分:3)

要将数据发布到网址,您可以使用CURL。

$my_url = 'http://www.google.com';
$post_vars = 'postvar1=' . $postvar1 . '&postvar2=' . $postvar2;

$curl = curl_init($my_url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_vars);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

$response = curl_exec($curl);

<强>更新

如果你不想使用CURL,可以这样试试:

$server= 'www.someserver.com';
$url = '/path/to/file.php';
$content = 'name1=value1&name2=value2';
$content_length = strlen($content);
$headers= "POST $url HTTP/1.0\r\nContent-type: text/html\r\nHost: $server\r\nContent-length: $content_length\r\n\r\n";
$fp = fsockopen($server, $port, $errno, $errstr);
if (!$fp) return false;
fputs($fp, $headers);
fputs($fp, $content);
$ret = "";
while (!feof($fp)) {
$ret.= fgets($fp, 1024);
}
fclose($fp);
print $ret;

如果您使用的是PHP5,则可以使用此功能将数据发布到URL:

function do_post_request($url, $data, $optional_headers = null)
{
  $params = array('http' => array(
              'method' => 'POST',
              'content' => $data
            ));
  if ($optional_headers !== null) {
    $params['http']['header'] = $optional_headers;
  }
  $ctx = stream_context_create($params);
  $fp = @fopen($url, 'rb', false, $ctx);
  if (!$fp) {
    throw new Exception("Problem with $url, $php_errormsg");
  }
  $response = @stream_get_contents($fp);
  if ($response === false) {
    throw new Exception("Problem reading data from $url, $php_errormsg");
  }
  return $response;
}

此功能来自here

并使用此功能执行类似

的操作
<?php

do_post_request('http://search.yahoo.com/', 'p=hello+yahoo')

?>

这将搜索“hello yahoo”