inscription à une newsletter

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : inscription à une newsletter

inscription à une newsletter

par annik » 14 déc. 2006, 19:41

Et bien, avec tout ça je vais pouvoir bien avancer... Je te remercie vraiment beaucoup pour ton aide! :D

par Ryle » 14 déc. 2006, 17:17

Nope (enfin je ne crois pas), la deuxième partie est destinée à la page php/html qui affiche ton flash (tu dois avoir une balise <embed> ou <object> ou <chépaquoi>, suffit de rajouter le bloc <script> avant ou après, ça peut très bien être dans l'entête de ta page html (<head></head>) :))

C'est l'appel à getURL("javascript:...") qui te permet d'y accéder depuis flash :)

En très résumé, on va dire que ça simule un navigateur. Il se connecte à la page demandé et passe les paramètres que tu lui donne, puis récupère le résultat affiché à l'écran et te le ramène. Donc en gros, y a deux choses interessantes à comprendre :
-l'envoi des données
    http_request.open('POST', url, true); // ouvre la connexion au script 
    http_request.send(params); // envoi les paramètres 
-le retour du résultat
if (http_request.status == 200) {  
          // si jamais tu souhaites confirmer que tout c'est bien passer 
          // résultat de la requête dans la variable http_request.responseText 
         }

inscription à une newsletter

par annik » 14 déc. 2006, 15:53

nom de nom! ça c'est du costaud!
Alors maintenant que je commençait à peine à m'habituer à devoir passer par .Php...
Si j'ai tout compris, le 2ème script va aussi dans flash?

par Ryle » 14 déc. 2006, 15:38

En fait, en flash il te suffit de faire appel à une fonction javascript en lui passant l'email que tu veux inscrire (avec tous les tests qui vont bien autour :)) :

Code : Tout sélectionner

on (release){ getURL("javascript:makeRequest("+Emailinsc.text+")"); // c'est bien le '+' pour concatener en flash hmm ? }
Et dans ta page, il te faut ajouter un bout de code javascript :
<script>
function makeRequest(email) {
	
    http_request = false;

    if (window.XMLHttpRequest) { // Mozilla, Safari,...
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {
            http_request.overrideMimeType('text/xml');
        }
    } else if (window.ActiveXObject) { // IE
        try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }

    if (!http_request) {
        alert('Abandon : Impossible de créer une instance XMLHTTP');
        return false;
    }

    http_request.onreadystatechange = handleResult; // appelle la fonction handleResult() pour gérer le résultat

// ICI TU SPECIFIES L'URL DU SCRIPT ET LES PARAMETRES A PASSER :)
    var url = 'http://HEBERGEUR/mail/mailinglist_process.php'; 
    var params = 'maillist=XXXXXX=&action=add&url=http://www.minkus.ch&add=Inscription&text='+email; 

    http_request.open('POST', url, true); // ouvre la connexion au script
    http_request.send(params); // envoi les paramètres

}
function handleResult(result) {
    if (http_request.readyState == 4) {
        if (http_request.status == 200) { 
          // si jamais tu souhaites confirmer que tout c'est bien passer
          // résultat de la requête dans la variable http_request.responseText
         } else {
            alert('Un problème est survenu avec la requête.');
        }
    }
}
</script>
Je ne rentre pas dans le détail de l'objet et des méthodes, tu trouveras plein d'info la dessus sur le forum JS/Ajax et sur google :) C'est surtout pour te donner une idée de comment procéder... n'hésite pas à changer l'url et à récupérer les valeurs en php pour vérifier que tout est correctement envoyé avant de le basculer sur leur outil d'inscription :)

inscription à une newsletter

par annik » 14 déc. 2006, 14:28

Je viens d'aller faire un tour sur Ajax.... Mais alors on pourrait insérer la requête à cette fichue mailing liste directement depuis le flash?
Alors ici je te mets le script de l'inscription, dis moi comment tourner le truc?
:roll:
on (release)
{
Email = Emailinsc.text;
if ( (Email == "") || (Email.indexOf("@") == -1) || (Email.indexOf(".") == -1) )
Status.text = "SVP entrez votre Email";
else
{
loadVariablesNum("inscription.php",0,'POST'); Status.text = "Vous êtes inscrit";
gotoSceneAndPlay("<current scene>",3);
}
}

par Ryle » 14 déc. 2006, 13:04

Euh, ce n'est pas tout à fait ça... l'utilisation d'ajax comme je te le suggère te permet de soumettre ton adresse en javascript, directement depuis ton flash, sans passer par php, sans avoir à changer de page...

Regarde un peu comment fonctionne ajax, le principe est assez simple. Il te suffit de créer un objet HTTPRequest en javascript, et de faire appel aux méthodes open() et send() de cet objet avec les paramètres ci-dessus.

Tu peux même récupérer le résultat du traitement (en réalité ce qui serait affiché à l'écran si l'utilisateur avait validé le formulaire html) et en déduire qu'il a réussi ou non (en repérant une phrase par exemple)

En fait, au lieu de soumettre ton formulaire en flash, tu aurais juste à faire appel à une fonction javascript :)

inscription à une newsletter

par annik » 14 déc. 2006, 12:32

Bien.. Alors maintenant j'ai ça:
<?
$mail=$_POST['Email'];
var url = 'http://HEBERGEUR/mail/mailinglist_process.php';
var method = 'POST';
var params = 'maillist=XXXXXX=&action=add&url=http://www.minkus.ch&add=Inscription&text='+Email;



?>

Est ce que je garde le echo que tu as noté dans la 1ère réponse ou bien me faut il un header???

par Ryle » 14 déc. 2006, 12:07

Arf, oki.. c'est vrai que c'était pas forcément évident... encore que le sujet du topic pouvait quand même le mettre sur la voie s'il avait eu un doute :)

(et pis c'est bien de laisser planer le doute quant à la possibilité que ce soit une question de lynchage ;))

par fred9999 » 14 déc. 2006, 11:59

non je parlais pas de ça mais des abréviations !!!

faut pas etre si :evil: :evil: :evil: :evil:


:lol:

par Ryle » 14 déc. 2006, 11:56

attention ryle on est dans débuter en php :P
Vi c'est sur, mais c'est par pour autant qu'on ne peut pas lui proposer une autre solution parce que celle-ci est en javascript ? ;)
(pis vu qu'il a refait tout son site en flash, il a probablement de bonnes bases en js à défaut de php)
ML=mail list ???
ou
ML= maximum lynchage????
:lol:
maximum lynchage !! :twisted:

par fred9999 » 14 déc. 2006, 11:56

il y a un truc auquel je viens de penser si tu veut envoyer des infos du flash vers du php il te faudra se petit script "actionscript":

Code : Tout sélectionner

if ((mail eq "")) { gotoAndPlay(55); } else { loadVariablesNum("mail.php", 0, "POST"); play(); }
voila voila @ +

inscription à une newsletter

par annik » 14 déc. 2006, 11:51

Aie aie aie! J'espère que c'était bien Mailing liste et pas Max lynchage!!! :lol:

inscription à une newsletter

par annik » 14 déc. 2006, 11:49

Super! Je vais essayer ton java si ça marche pas, je vais me lancer dans la fabrication totale....
Merci à vous deux, je vous tiens au courant.... :)

par fred9999 » 14 déc. 2006, 11:48

attention ryle on est dans débuter en php :P

ML=mail list ???

ou

ML= maximum lynchage????


:lol:

par Ryle » 14 déc. 2006, 11:45

Bah si tu veux continuer à utiliser la ML de ton hébergeur, le plus simple reste selon moi un p'tit bout de javascript avec le HTTPRequest.

Il te suffirait de passer les paramètres suivants dans l'objet pour qu'il procède exactement comme la validation de ton précédent formulaire :
var url = 'http://admin.HEBERGEUR.ch/mail/mailinglist_process.php';
var method = 'POST';
var params = 'maillist=XXXXXXXXXXXX&action=add&url=http://www.minkus.ch&add=Inscription&text='+email;
//ou email serait la valeur saisie dans ton champ
Ceci dit, ca reste quand même interessant de créer sa propre newsletter, mais c'est pas la même quantité de travail :)