【问题标题】:How do I submit POST data using PHP and cURL?如何使用 PHP 和 cURL 提交 POST 数据?
【发布时间】:2011-08-06 18:44:21
【问题描述】:

谁能帮助我如何使用 PHP 和 cURL 将数据从表单 (POST) 发送到 URL?

使用 cURL,我想要完成的只是发送数据,我不想被重定向也不想得到任何类型的输出(HTML 或 TEXT),只需提交数据。

很高兴知道数据是否已成功提交以处理错误或重定向。

附加信息。我认为我被重定向的原因是,一旦我执行 cURL,作为第三方网站的目标页面就会重定向到位,以确认用户已收到他们的数据,并且由于某种原因,当我使用 cURL 发送我的数据,他们的重定向会影响我的页面,因此我的页面也会重定向到他们的确认站点。

谢谢大家。

示例代码:

$sub_req_url ="http://domain.com/util/request";
$ch = curl_init($sub_req_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch, CURLOPT_POSTFIELDS,  "id=64&session=1&k=B0EA8835E&firstname=Name&lastname=Lastname&company=Company%20Name&email=me@gmail.com&work_phone=123-456-7890");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);

$resp = curl_exec($ch);
curl_close($ch);

我编辑这篇文章以展示我正在使用的示例。我应该首先发布代码。

【问题讨论】:

  • 显示您拥有的代码。听起来问题就在那里。您的问题没有具体信息可供参考。 (另外,“任何人都可以帮忙”并不是一个技术问题。)
  • 嗯...您不希望您要发布的网站重定向吗?当您成功登录时,大多数登录页面会将您重定向到经过身份验证的主页。话虽如此,如果重定向正在改变您所在页面的外观,那么听起来您没有正确处理 cURL 响应.正如马里奥所说,代码会有所帮助
  • Passing $_POST values with cURL 的可能重复项
  • @mario 和 wolv2012 - 编辑了帖子以使其更有意义。
  • 如果通过 cURL 发起的 POST 请求遇到 HTTP 重定向,则 cURL API 不会神奇地将其传输到正在运行的 PHP 脚本响应标头中。您对事件的描述与显示的代码不匹配。

标签: php curl


【解决方案1】:
function post($requestJson) {

    $postUrl = $this->endpoint."?access_token=".$this->token;

    //Get length of post
    $postlength = strlen($requestJson);

    //open connection
    $ch = curl_init();

    //set the url, number of POST vars, POST data
    curl_setopt($ch,CURLOPT_URL,$postUrl);
    curl_setopt($ch,CURLOPT_POST,$postlength);
    curl_setopt($ch,CURLOPT_POSTFIELDS,$requestJson);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $response = curl_exec($ch);

    //close connection
    curl_close($ch);

    return $response;
}

【讨论】:

  • 我仍然被重定向,我相信是由于我发送数据的页面。似乎一旦该页面(第三方网站)收到我的数据,如果数据被批准,它就会重定向到确认页面。有没有办法只发送数据并显示我的自定义确认页面?而不是他们的页面?
【解决方案2】:

谁能帮助我如何使用 PHP 和 cURL 将数据从表单 (POST) 发送到 URL?

请搜索网站和/或发布您的代码。看起来做实际的 POST 请求不是你的具体问题。如果是这样,请查看以下相关问题:Passing $_POST values with cURLphp curl: i need a simple post request and retrival of page example

使用 cURL,我想要完成的只是发送数据,我不想被重定向,也不想得到任何类型的输出(HTML 或 TEXT),只需提交数据。

假设 $ch 是你的 curl 句柄:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);

选项的含义是described on the PHP manual page。 然后执行curl_exec 并检查请求是否成功的返回值。

与该部分可能相关的问题是:Make curl follow redirects?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    • 2015-11-07
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    • 2021-12-10
    • 2017-05-25
    相关资源
    最近更新 更多