2016-10-06 9 views
0

は私が電子メールフィールドの名前は「NE」にする必要があるcURLのPHPを通過していないポストが、ReturnTransferは

をmyurl.com/?na=sするために、フォームの電子メールデータを送信する必要がニュースレタープラグインを持って取り組んでいます

ニュースレタープラグインにサブスクライバデータを送信するために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); 

このコードは、すべて私がAJAX経由にデータを送信send.phpと呼ばれるPHPファイル内にあります。 send.phpファイルは、購読者に電子メールを送信し、購読者の電子メールをニュースレタープラグインに送信します。

私はCURLOPT_RETURNTRANSFERの出力を見ることができるように、その電子メールに$ resultを追加しました。

フォームフィールドに自分のメールアドレス(テスト用)を入力して送信をクリックすると、電子メールが届き、その下に「購読」ボタン(RETURNTRANSFERの出力)が表示されます。

点検要素でボタンのデータをサブスクライブです:

<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="[email protected]"> 
    <input type="hidden" name="ts" value="1475753672"> 
    <input type="submit" value="Subscribe"> 
</form> 

私はそれをクリックすると、それは私のニュースレターのプラグインに成功した電子メールを送信します。

基本的に、cURL ReturnTransferの出力ではすべてが正しく表示されていますが、実際にはサイトから送信したときに自分のサイトにデータをPOSTしていません。私が受け取った電子メールの中に生成された送信ボタンを押したときだけ。

私は間違っていますか?

ありがとうございます!

答えて

1

私はあなたがこのようなpostfieldを変更する必要が

...あなたます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()に忘れていません。

+0

彼は 'http_build_query()'も使用できます。 – vaso123

+0

どこでjsonデータをデコードする必要がありますか?私はjsonにあまり馴染んでいない。 http_build_queryの場合、私はポストフィールドを次のように変更しようとしました:curl_setopt($ ch、CURLOPT_POSTFIELDS、http_build_query($ curlvars));それは動作しませんでした。同じ結果 – Ram

+0

あなたのサーバ側の@Ramあなたの例であるcurl要求を処理するサーバhttp://www.myurl.com/ – anuraj

関連する問題