用php发布数据[重复]

Posted

技术标签:

【中文标题】用php发布数据[重复]【英文标题】:Post data with php [duplicate] 【发布时间】:2013-02-04 05:53:05 【问题描述】:

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

更新:为了更简洁 - 如何使用 PHP “写入”到另一个页面上的输入。

【问题讨论】:

您的意思是您希望使用帖子数据发出另一个请求,还是只是想回显发送到您页面的帖子数据? 您的 anwser 在这里:***.com/questions/13971003/php-server-side-post 它甚至专门指定直接从您的 PHP 代码(服务器端)调用 POST。在客户端,您可以通过 FORM-tag 执行此操作,并将您的 action="" 字段指定给您要发布到的 webapge。 说清楚,我是菜鸟,看不懂很快 我还很好地要求不要关闭这个问题,因为我需要针对我的具体问题而不是其他问题的答案。 【参考方案1】:

要将数据发布到 URL,您可以使用 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”

【讨论】:

小心,在 Linux 上进行干净的 PHP 安装 curl 不是软件包附带的默认库。应该指出你是如何在 PHP 中真正发布的。这不是直接的方法。它可以通过调用 PHP fopen()/redirect 或通过 HTML 表单来实现。 你能解释一下并举一个不使用cURL的例子吗? 看看我更新的答案 ;-) 你能解释一下第二个代码吗? 我的意思是第二个代码,没有 cURL 和第二个发布,如何指定输入,如果它们是多个并且还从页面获取验证码

以上是关于用php发布数据[重复]的主要内容,如果未能解决你的问题,请参考以下文章

用php构建聊天应用程序[重复]

php 用双重循环出现重复值

使用 PHP 从网页中提取特定数据 [重复]

用PHP检查逗号分隔的字符串中是不是存在值[重复]

使用 jQuery Ajax 将数据发布到另一个 php 文件 [重复]

用 PHP Rest API 反应 axios,如何编写 baseurl [重复]