Envoyer d'un clic un mail sans formulaire de saisie

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par salva, 17 Novembre 2011.

  1. salva
    salva WRInaute accro
    Inscrit:
    16 Avril 2006
    Messages:
    3 577
    J'aime reçus:
    0
    Bonjour,

    Je souhaite envoyer par mail une variable à l'admin.
    Ce mail serait expédié par le clic sur un lien texte donc sans formulaire de saisie.
    Un pop-up de confirmation d'envois de mail avec un bouton "Ok" clôturerait l'action.

    Evidemment, il faudrait que les robots/spammeurs en tout genre ne puissent lire ni l'email de l'admin, ni suivre le lien.

    Est-ce faisable? Auriez-vous une piste?

    Merci.
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 180
    J'aime reçus:
    330
  3. salva
    salva WRInaute accro
    Inscrit:
    16 Avril 2006
    Messages:
    3 577
    J'aime reçus:
    0
    Merci pour le lien.
    Les commentaires sont mitigés quant à la sécurité. J'ai cherché un peu sur google, l'intermédiaire du captcha semble incontournable.
     
  4. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 180
    J'aime reçus:
    330
  5. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 417
    J'aime reçus:
    0
    le plus simple serait un onclick sur le lien avec l'appel (en ajax) du script d'envoi de mail
     
  6. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 180
    J'aime reçus:
    330
    +1 Leonick. Sans onclick directement, juste un listener sur le lien.
     
  7. salva
    salva WRInaute accro
    Inscrit:
    16 Avril 2006
    Messages:
    3 577
    J'aime reçus:
    0
    Je vais jeter un oeil de ce côté. Merci à vous deux.
     
  8. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 181
    J'aime reçus:
    1
    ou sur une image ce qui règle direct le problème du lien.
    edit : pour la solution ajax, le mail sera sur le serveur donc pour l'avoir faut se lever de bonne heure.
     
  9. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 417
    J'aime reçus:
    0
    je n'ai pas tout compris à ce que tu souhaitais faire : juste avoir comme information qu'un lien a été cliqué ou avoir d'autres infos ?
     
  10. salva
    salva WRInaute accro
    Inscrit:
    16 Avril 2006
    Messages:
    3 577
    J'aime reçus:
    0
    Voici ce que j'ai fait
    Code:
    // Fonction de creation de l'objet XMLHttpRequest
    function getXhr()
    {
    	if(window.XMLHttpRequest) 
    		xhr = new XMLHttpRequest(); 
    	else if(window.ActiveXObject)
    	{  
    		try
    		{
    			xhr = new ActiveXObject("Msxml2.XMLHTTP");
    		}
    		catch (e)
    		{
    			xhr = new ActiveXObject("Microsoft.XMLHTTP");
    		}
    	}
    	else 
    	{ 
    		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest, veuillez le mettre à jour"); 
    		xhr = false; 
    	} 
    }
    
    //Fonction qui envoie la variable
    function envoiMail(param)
    {
    	var data = "param="+param;
    	xhr.open("POST", "/script_envois.php", true);
    	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    	xhr.send(data);
    	alert('Votre alerte sera étudiée dans les plus brefs délais. Merci pour votre concours !');
    }
    Code:
    //Contenu script_envois.php
    <?php
    
    $param = $_POST['param'];
    
      $headers  = "From: \"toto\"<toto@titi.fr>\n";
      $headers .= "Reply-To: toto@titi.fr\n";
      $headers .= "X-Priority: 1\n";
      $headers .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
      $headers .= "Content-Transfer-Encoding: 8bit";
    
      $subject  = 'Alerte contenu !';
    
      $message  = "Url \n";
      $message .= $param;
    
      $result = mail('xxxxx@gmail.com', $subject, $message, $headers);
    
    ?>
    
    Code:
    // div du clic
    <div  class="div_alert" onClick="getXhr(); envoiMail(<?php echo $row->id ?>);">
    Alerte contenu
    </div>
    J'arrive bien à envoyer par mail 1 et une seule variable.
    Mais dès que je souhaite envoyer $linkTarget ci-dessous, la valeur n'est pas définie.
    Code:
    $linkTarget = sefRelToAbs( "index.php?option=$option&page=show_ad&adid=".$row->id."&catid=".$row->category."&Itemid=".$itemid); echo $linkTarget;
    $linkTarget représente l'url de la page où se trouve le div du clic qui envoie le mail. Et je souhaiterai envoyer $linkTarget sous forme d'url dans le mail que je reçois.

    J'ai la tête qui fume et je ne vois plus rien. Un ptit coup de main please. :)
     
  11. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 181
    J'aime reçus:
    1
    essaie en GET c'est beaucoup plus simple :

    Dans le javascript d'envoie
    xhr.open("GET", "/script_envois.php?param="+document.location, true);

    Dans le script de mail côté serveur
    $param = $_GET['param'];

    Le seul truc que j'ai pas regardé c'est si tu passait d'autre datas en POST (là ça prend juste en compte l'url)
    Sinon j'ai eu aussi des soucis en post avec ajax, de mémoire il me semble que j'ai laissé tombé pour une autre solution.
     
  12. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 181
    J'aime reçus:
    1
    J'oubliais ... fait une petite vérification dans script_envois.php avant d'envoyer ton mail pour savoir si le référent est bien ton site (histoire d'éviter de se faire bombarder par un petit futé qui aurait lu ton javascript)
     
  13. salva
    salva WRInaute accro
    Inscrit:
    16 Avril 2006
    Messages:
    3 577
    J'aime reçus:
    0
    Merci zeb pour ta suggestion. J'ai tenté sans succès.

    Par contre, j'ai réussi à passer 2 variables en procédant comme ci-dessous et ça me suffit pour l'instant :)
    Code:
    <div  class="div_alert" onClick="getXhr(); envoiMail(<? echo $row->id ?><? echo $row->item ?>);">
    Alerte contenu
    </div>
    J'ai le sentiment que seuls les chiffres passent en paramètre.

    Edit: je récupère un nombre à 7 chiffres.
    J'imagine qu'il est possible en php de transformer ce nombre en deux variables distinctes: une variable contiendrait les cinq premiers chiffres et la deuxième variable les deux dernier chiffres restant.

    Je pourrai ainsi reconstituer l'url dans le script d'envoi avant l'envoi.
     
  14. salva
    salva WRInaute accro
    Inscrit:
    16 Avril 2006
    Messages:
    3 577
    J'aime reçus:
    0
    Pour scinder la variable en deux autres distinctes.
    Code:
    $param = $_POST['param'];
    $param1 = substr($param,0,5);
    $param2 = substr($param,5,6);
     
  15. salva
    salva WRInaute accro
    Inscrit:
    16 Avril 2006
    Messages:
    3 577
    J'aime reçus:
    0
    Solution avec url dans le mail.
    Code:
    // le div du clic
    // comme seuls les chiffres passent en paramètres, j'ai rajouté le séparateur 123454321 qui me sert 
    // à reconstituer l'url
    <div  class="div_alert" onClick="getXhr(); envoiMail(<? echo $row->id .'123454321'. $row->category; ?>);">
    Alerte contenu
    </div>
    
    //le script d'envoi
    <?php
    $param = $_POST['param'];
    // je récupère ma chaine et remplace mon séparateur (qui est unique) 
    // par une partie de l'url que je reconstitue petit à petit
    $param1 = str_replace("100050001","/catid,","$param");
      $headers  = "From: \"tot\"<toto[@t]titi.fr>\n";
      $headers .= "Reply-To: toto[@t]iti.fr\n";
      $headers .= "X-Priority: 1\n";
      $headers .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
      $headers .= "Content-Transfer-Encoding: 8bit";
    
      $subject  = 'Alerte contenu !';
    // reconstruction restante de l'url
      $message  = "Url \n";
      $message .= "http://www.partie_restante_de_lurl,";
      $message .= $param1;
    // le slash final 
      $message .= "/";
    
    
      $result = mail('mon_email', $subject, $message, $headers);
    
    ?>
    Merci encore une fois aux intervenants.
     
Chargement...
Similar Threads - Envoyer clic mail Forum Date
Envoyer un gone, avec un match sur un nom de parametre "variant" URL Rewriting et .htaccess 14 Octobre 2020
Envoyer un Rapport Analytic sans toutes les données Google Analytics 17 Janvier 2019
Envoyer un lien cliquable par mail à un ami Développement d'un site Web ou d'une appli mobile 29 Juillet 2018
Comment envoyer par email le contenu d'un formulaire ? Développement d'un site Web ou d'une appli mobile 23 Avril 2018
envoyer 10 000 email d'un coup Gmail, Google Talk, Blogger et Orkut 16 Septembre 2017
[Google Shopping] envoyer toutes les déclinaisons ? AdWords 2 Avril 2016
En php : Générer un pdf apartir de données d'un formulaire et l'envoyer par mail Développement d'un site Web ou d'une appli mobile 7 Octobre 2015
Envoyer 2 Sitemaps à Search Console ? Crawl et indexation Google, sitemaps 22 Juillet 2015
Envoyer 5 000 newsletters par mois, quel outil ou service utiliser ? Développement d'un site Web ou d'une appli mobile 3 Avril 2015
renvoyer urls comprenant une expression vers page unique URL Rewriting et .htaccess 30 Octobre 2014