Envoyer d'un clic un mail sans formulaire de saisie
15 messages
• Page 1 sur 1
-

salva - WRInaute accro

- Messages: 4273
- Inscription: 16 Avr 2006
Envoyer d'un clic un mail sans formulaire de saisie
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.
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.
-

spout - WRInaute accro

- Messages: 4378
- Inscription: 14 Mai 2003
Re: Envoyer d'un clic un mail sans formulaire de saisie
Tu peux mettre un input hidden qui se rempli au mouvement de la souris.
http://www.webdesignfromscratch.com/javascript/human-form-validation-c ... eck-trick/
http://www.webdesignfromscratch.com/javascript/human-form-validation-c ... eck-trick/
-

spout - WRInaute accro

- Messages: 4378
- Inscription: 14 Mai 2003
Re: Envoyer d'un clic un mail sans formulaire de saisie
Bcp d'avis sur les captcha sont mitigés, cfr. article super intéressant:
http://coding.smashingmagazine.com/2011/03/04/in-search-of-the-perfect-captcha/
Il doit il y avoir d'autres techniques dans ton cas (cookie, session, token, AJAX, referrer, ...) , et la première chose à faire serait de ne pas afficher l'e-mail en clair.
http://coding.smashingmagazine.com/2011/03/04/in-search-of-the-perfect-captcha/
Il doit il y avoir d'autres techniques dans ton cas (cookie, session, token, AJAX, referrer, ...) , et la première chose à faire serait de ne pas afficher l'e-mail en clair.
-

zeb - WRInaute accro

- Messages: 4555
- Inscription: 5 Déc 2004
Re: Envoyer d'un clic un mail sans formulaire de saisie
Leonick a écrit:le plus simple serait un onclick sur le lien avec l'appel (en ajax) du script d'envoi de mail
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.
-

salva - WRInaute accro

- Messages: 4273
- Inscription: 16 Avr 2006
Re: Envoyer d'un clic un mail sans formulaire de saisie
Voici ce que j'ai fait
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.
J'ai la tête qui fume et je ne vois plus rien. Un ptit coup de main please.
- Code: Tout sélectionner
// 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: Tout sélectionner
//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: Tout sélectionner
// 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: Tout sélectionner
$linkTarget = sefRelToAbs( "index.php?option=$option&page=show_ad&adid=".$row->id."&catid=".$row->category."&Itemid=".$itemid); echo $linkTarget;
J'ai la tête qui fume et je ne vois plus rien. Un ptit coup de main please.
-

zeb - WRInaute accro

- Messages: 4555
- Inscription: 5 Déc 2004
Re: Envoyer d'un clic un mail sans formulaire de saisie
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.
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.
-

zeb - WRInaute accro

- Messages: 4555
- Inscription: 5 Déc 2004
Re: Envoyer d'un clic un mail sans formulaire de saisie
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)
-

salva - WRInaute accro

- Messages: 4273
- Inscription: 16 Avr 2006
Re: Envoyer d'un clic un mail sans formulaire de saisie
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
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.
Par contre, j'ai réussi à passer 2 variables en procédant comme ci-dessous et ça me suffit pour l'instant
- Code: Tout sélectionner
<div class="div_alert" onClick="getXhr(); envoiMail(<? echo $row->id ?><? echo $row->item ?>);">
Alerte contenu
</div>
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.
-

salva - WRInaute accro

- Messages: 4273
- Inscription: 16 Avr 2006
Re: Envoyer d'un clic un mail sans formulaire de saisie
Pour scinder la variable en deux autres distinctes.
- Code: Tout sélectionner
$param = $_POST['param'];
$param1 = substr($param,0,5);
$param2 = substr($param,5,6);
-

salva - WRInaute accro

- Messages: 4273
- Inscription: 16 Avr 2006
Re: Envoyer d'un clic un mail sans formulaire de saisie
Solution avec url dans le mail.
Merci encore une fois aux intervenants.
- Code: Tout sélectionner
// 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.
15 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- envoyer mail adsense
- envoyer un mail sous shh
- Je n'arrive plus a envoyer de mail à hotmail :/
- envoyer ses factures par mail
- Envoyer un mail() sur hotmail. Quels headers ?
- Envoyer une page html par mail
- Envoyer un mail à 500 personnes comment faire?
- [php] envoyer un mail avec une pièce jointe
- Envoyer un mail au format HTML avec la fonction email()
- Problème pour envoyer des emails avec mail()
- Transformer des simples citations de votre site en liens
Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink).
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

