8791 sujets

Développement web côté serveur, CMS

Bonjour a tous,
je cherche a automatiser une tache super chiante mais tres simple : desinscrire des utilisateurs d'une newsletter BEAUCOUPS d'utilisateurs.

En bon feneant heu informaticien, je me suis dit qu'un bon petit script pourrai le faire a ma place.

j'ai la liste de mes emails dans un fichier excel, et je les lis un a un pour les passer a ma fonctions curl qui me rempli mon formulaire et me le submit. (cette partie fonctionne je vous l'epargne j'utilise PHP Excel)

J'ai attraper un script curl qui marche pas dans mon cas j'ignore pourquoi, j'ai pas de messages d'erreur.

le formulaire est rempli et envoyer sur la meme page et la page retourne un message dans une balise pour informer si le traitement s'est bien passer ou pas.

'mon email de test' doit bien sur etre remplacer par un email valide (j'utilise un yopmail pour mes test test1@yopmail.fr)

vous pouvez souscrire a cette adresse http://www.dacast.com/newsletter.html

la seul facon que j'ai trouver pour tester mon script est de me desinscrire manuellement.
mon script ne fonctionne pas car a chaque lancement je peux me desinscrire apres.
mais je ne peux pas me desinscrire 2 fois de suite, ce qui prouve que la desinscription a bien ete prise en compte.

ci dessous mon code, une idee de debug pour me mettre sur la voie serai deja beaucoup !

Merci a tous Smiley biggrin



main();

function main() {

    setRemoteForm('mon email de test');
}


function setRemoteForm($email) {
   
    $url = 'http://www.dacast.com/newsletter_unsubscribe.html';

    //create array of data to be posted
    $post_data['email'] = "'" . $email . "'";

    //traverse array and prepare data for posting (key1=value1)
    foreach ($post_data as $key => $value) {
        $post_items[] = $key . '=' . $value;
    }

    //create the final string to be posted using implode()
    $post_string = implode('&', $post_items);

    echo $post_string;

    //create cURL connection
    $curl_connection = curl_init();
    curl_setopt($curl_connection,CURLOPT_URL,$url);
    curl_setopt($curl_connection,CURLOPT_POST,count($post_string));
    curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);

    //perform our request
    $result = curl_exec($curl_connection);


    //show information regarding the request
    print_r(curl_getinfo($curl_connection));
        
    echo curl_error($curl_connection);

    //close the connection
    curl_close($curl_connection);
}


Modifié par levure (31 Dec 2013 - 00:03)
Peux-tu changer ton code ainsi:

    //create cURL connection
    $curl_connection = curl_init();
    curl_setopt($curl_connection,CURLOPT_URL,$url);
    curl_setopt($curl_connection,CURLOPT_POST,count($post_string));
    curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_connection, CURLOPT_HEADER, true);

    //perform our request
    $result = curl_exec($curl_connection);
echo $result;


Ceci te permettra de récupérer le retour de la page, headers compris.
bonjour Anima,
merci pour ta reponse rapide !

j'obtient donc ceci pour le header

HTTP/1.1 200 OK Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Content-Type: text/html Date: Fri, 27 Dec 2013 16:58:07 GMT Expires: Thu, 19 Nov 1981 08:52:00 GMT Pragma: no-cache Server: nginx Set-Cookie: PHPSESSID=mpi34nuqimv1u7upkjqf0qqbs0; expires=Sat, 28-Dec-2013 17:58:06 GMT; Max-Age=90000; path=/ X-Powered-By: PHP/5.5.5-1+debphp.org~precise+2 transfer-encoding: chunked Connection: keep-alive


pour le getinfo

Array ( Smiley url => http://www.dacast.com/newsletter_unsubscribe.html [content_type] => text/html [http_code] => 200 [header_size] => 445 [request_size] => 178 Smiley filetime => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.858 [namelookup_time] => 0.031 [connect_time] => 0.125 [pretransfer_time] => 0.125 [size_upload] => 28 [size_download] => 62830 [speed_download] => 73228 [speed_upload] => 32 [download_content_length] => -1 [upload_content_length] => 0 [starttransfer_time] => 0.453 [redirect_time] => 0 Smiley certinfo => Array ( ) )


une seul chose peux resumer tout ceci http://www.youtube.com/watch?v=6cMCd-98CEw ^^

Peux etre vois tu quelque chose qui te creve les yeux, mais comme je suis un newbies j'ai juste l'impression d'etre aveugle ! Smiley langue

Merci de ton aide et j'espere a bientot !
Je vois surtout qu'ils laissent passer beaucoup trop d'infos.

Ah, oui, et ça aussi:
<form class="form-horizontal" method="POST" action="/newsletter-unsubscribe.html">
                <div class="input-append">
                    <input class="span3" id="email" name="email" size="16" type="text"><button class="btn" type="submit">Unsubscribe</button>
                </div>
            </form>


Tu envoies ton formulaire à la mauvaise addresse. C'est newsletter-unsubscribe.html pour le POST!
Merci,
Je precise que je suis stagiaire et que j'ai pas acces au serveur ni meme au code du site.

J'ai enfin une reponse dans ma page

This email address is invalid.

l'adresse etait pourtant bien enregistrer puisque j'ai pu la desinscrire ensuite !

Je continu donc a chercher, merci pour ton aide precieuse (j'aurai pu chercher un moment la difference d'URL etait pas flagrante !)

Merci Bonne journee
levure a écrit :
Merci,
Je precise que je suis stagiaire et que j'ai pas acces au serveur ni meme au code du site.

J'ai enfin une reponse dans ma page

This email address is invalid.

l'adresse etait pourtant bien enregistrer puisque j'ai pu la desinscrire ensuite !

Je continu donc a chercher, merci pour ton aide precieuse (j'aurai pu chercher un moment la difference d'URL etait pas flagrante !)

Merci Bonne journee

2e erreur:

$post_data['email'] = "'" . $email . "'";


A remplacer par:

$post_data['email'] = $email;
Awesome, ca marche !

l'habitude d'ecrire des requete sql de cette facon, merci pour ton temps ca fonctionne Impec !