2016-10-06 1 views
0

J'ai un plugin bulletin qui exige que j'envoie des données de formulaire email à myurl.com/?na=scURL PHP article non en passant par, mais ReturnTransfer travaille

Le nom du champ e-mail doit être « ne » J'essaye d'employer cURL pour soumettre des données d'abonné au plugin de bulletin d'information. Voici le code que je utilise maintenant:

$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); 

Ce code est tout dans un fichier php appelé send.php que j'envoie les données à travers ajax. Le fichier send.php envoie un e-mail à l'abonné et envoie également l'e-mail de l'abonné au plugin de newsletter.

J'ai ajouté le résultat $ à cet e-mail afin que je puisse voir la sortie CURLOPT_RETURNTRANSFER. Lorsque j'entre mon propre email (pour tester) dans le champ de formulaire et que je clique sur soumettre, j'obtiens l'email et en bas j'obtiens un bouton "s'abonner" (la sortie du RETURNTRANSFER).

SUBSCRIBE données de bouton dans Inspecter l'élément est:

<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> 

Si je clique, il soumettra le courrier électronique avec succès à mon plugin bulletin. Fondamentalement, la sortie de cURL ReturnTransfer montre tout correctement, mais ce n'est pas réellement POSTing les données sur mon site lorsque je soumets à partir du site. Seulement quand j'appuie sur le bouton de soumission généré dans l'e-mail que je reçois.

Qu'est-ce que je fais mal?

Merci d'avance!

Répondre

1

Je pense que le problème dans votre fonction curl_setopt ($ ch, CURLOPT_POSTFIELDS) ..

vous devez changer le postfield comme ça ..

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

essayer ce code .. à côté serveur pas oublié json_decode() les données à venir

+0

il peut aussi utiliser 'http_build_query()'. – vaso123

+0

Où devrais-je décoder les données json? Je ne suis pas très familier avec JSON. Pour http_build_query, j'ai essayé de changer les postfields en: curl_setopt ($ ch, CURLOPT_POSTFIELDS, http_build_query ($ curlvars)); et ça n'a pas marché. Mêmes résultats – Ram

+0

@Ram de votre côté serveur qui est le serveur qui gère la requête curl .De votre exemple http://www.myurl.com/ – anuraj