cURL PHP帖子没有通过但ReturnTransfer正在运行

时间:2016-10-06 11:45:41

标签: php ajax curl

我有一个简报插件,要求我将表单电子邮件数据发送到myurl.com/?na=s

电子邮件字段的名称必须为“ne”

我正在尝试使用cURL将订阅者数据提交到简报插件。这是我现在使用的代码:

$address = $_POST['emailer'];

$curlvars = [
    'na' => 's',
    'ne' => $address
];

$ch = curl_init('http://www.myurl.com/');
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_USERAGENT, 
  "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlvars);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($ch);
$curl_error = curl_error($ch);
curl_exec($ch);

curl_close($ch);

这段代码都在一个名为send.php的php文件中,我通过ajax发送数据。 send.php文件通过电子邮件向订阅者发送电子邮件,并将订阅者的电子邮件提交给新闻稿插件。

我在该电子邮件中添加了$ result,因此我可以看到CURLOPT_RETURNTRANSFER输出。

当我在表单字段中输入我自己的电子邮件(用于测试)并单击提交时,我收到电子邮件,在底部我得到一个“订阅”按钮(RETURNTRANSFER的输出)。

Inspect Element中的订阅按钮数据是:

<form method="post" action="http://www.myURL.com/" id="m_-3594728259508176106form" target="_blank" onsubmit="try {return window.confirm(&quot;You are submitting information to an external page.\nAre you sure?&quot;);} catch (e) {return false;}">
    <input type="hidden" name="q" value="/10442-2/"><input type="hidden" name="na" value="s"><input type="hidden" name="ne" value="myemail@gmail.com">
    <input type="hidden" name="ts" value="1475753672">
    <input type="submit" value="Subscribe">
</form>

如果我点击它,它会将电子邮件成功提交到我的简报插件。

基本上,cURL ReturnTransfer输出正确显示所有内容,但是当我从网站提交时,它实际上并没有将数据发布到我的网站。只有当我点击收到的电子邮件中生成的提交按钮时。

我做错了什么?

提前致谢!

1 个答案:

答案 0 :(得分:1)

我认为curl_setopt($ ch,CURLOPT_POSTFIELDS)函数存在问题..

你需要像这样更改帖子..

 @curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($curlvars ));
 @curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));

试试这段代码.. 在服务器端不要忘记json_decode()即将到来的数据