Modification d'un formulaire multi-destinataire

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 : Modification d'un formulaire multi-destinataire

par jpaul » 03 juin 2006, 13:32

Hum intéressant ça !
Je n'ai pas le temps de revenir sur tes scripts mais as-tu essayé une adresse du type :
"-f pseudo <[email protected]>" ?

si comme je crois comprendre en lisant :
Ca affiche toujour le NOBODY, par contre, l'adresse derrière est bien celle de l'internaute expéditeur.
tu as un truc du genre :
NOBODY <[email protected]>
ça devrait résoudre ton problème...

par christ » 02 juin 2006, 19:00

Le serveur est unix/linux.

Dans ton script, ya un truc qui cloche dans le headers non ?

Il faudrait plutôt :



Code : Tout sélectionner

$headers = 'From: $From' . "\r\n" . 'Reply-To: $From' . "\r\n" . 'X-Mailer: PHP/' . phpversion();
J'ai remplacé [email protected] par $From,
car ce que je cherche c'est que ce soit l'adresse de l'expéditeur (que l'internaute indique dans son message)

Mais j'ai déjà essayé ça sur le script.
Ca affiche toujour le NOBODY, par contre, l'adresse derrière est bien celle de l'internaute expéditeur.

Et en fait, à la place du NOBODY, j'aurais aimé avoir $Pseudo (que l'internaute indique dans le champs "nom").

par jpaul » 02 juin 2006, 15:03

Hum ce que je peux dire, c'est que sur windows, avec php.ini contenant :
sendmail_from= [email protected] ; for Win32 only
SMTP = serveur.mon.domaine ; for Win32 only
smtp_port = 25

je reçois un message dont l'entête est :

Code : Tout sélectionner

Subject: essai To: [email protected] From: [email protected] Reply-To: [email protected] X-Mailer: PHP/4.3.11
avec ce script :
<?
     $headers = 'From: [email protected]' . "\r\n" .
     'Reply-To: [email protected]' . "\r\n" .
     'X-Mailer: PHP/' . phpversion(); 
$dest="[email protected]";
$undelivered="[email protected]";
$sujet="essai";
$body="texte de l'essai";
if(!mail($dest,$sujet,$body, $headers, "-f $undelivered")) {
echo "<BR>Problème...";
}
else {
echo "<BR>OK...";
}
phpinfo();
?>
Il semble que le '-f...' soit innopérant sous windows : je n'ai pas de [email protected] dans le message reçu.

As-tu bien renseigné le header avec les champs from et Reply-To ?
Est-tu sous unix/linux ou bien windows ?

par christ » 02 juin 2006, 12:28

Salut !

Alors je viens d'essayer, et ça marche pas.
J'ai essayé plein de trucs sans succès.

par jpaul » 02 juin 2006, 09:26

As-tu fait un test en remplaçant le
, "-f $undelivered"
par rien du tout dans :
if(!mail($dest,$sujet,$body, $headers, "-f $undelivered"))
Ca donne quoi ?

Il me semble comprendre que le -f blablabla est étroitement lié à sendmail, ça doit être un peu particulier.
Perso, je n'ai pas encore utilisé ce paramètre.

par jpaul » 02 juin 2006, 08:09

Comme ça, je ne vois pas, ce que tu décris ne me dis rien, mais peut être avec un bout de code...
Oups, je n'avais pas vu le lien, je regarde...

par christ » 02 juin 2006, 00:02

Bonjour Jpaul,

Alors effectivement, j'ai vu a peu près la même chose sur NEXEN où ya les fonctions php.

Et finalement, j'ai vu ce code (dans la page contact.php)


if(!mail($dest,$sujet,$body, $headers, "-f $From"))

Où il y avait à la place de $From, $undelivered.
($undelivered est l'adresse où les courriels non délivrés arrivent, je ne vois pas à quoi ça peut servir dans le script, les courriels arrivent sur des adresses déjà écrites, l'internaute n'a qu'à en sélectionner une, donc pas de risque d'erreur).

par contre, si j'enlève les guillemets à -f $From, ça ne fonctionne pas.
et si j'enlève -f non plus.

Et ça marque toujours dans l'expéditeur le nom NOBODY (par contre l'adresse est bien celle de l'expéditeur).
Je n'arrive pas à voir comment mettre la variable $Name à la place de NOBODY.

Pour la définition de headers comme tu l'a marqué plus haut, j'avais fait ça mais ça ne fonctionnait pas mieux.

voilà, si tu as une idée pour la variable $Name à la place de NOBODY, je suis toute ouie.

Merci

Christ

par jpaul » 01 juin 2006, 23:52

Pour modifier le nom de l'expéditeur tu peux t'inspirer de :
http://fr2.php.net/manual/fr/function.mail.php
Tu regardes l'exemple 2 :
<?php
     $to      = '[email protected]';
     $subject = 'le sujet';
     $message = 'Bonjour !';
     $headers = 'From: [email protected]' . "\r\n" .
     'Reply-To: [email protected]' . "\r\n" .
     'X-Mailer: PHP/' . phpversion();

     mail($to, $subject, $message, $headers);
 ?> 
Il te suffit de remplacer les adresses des 2 lignes :
     $headers = 'From: [email protected]' . "\r\n" .
     'Reply-To: [email protected]' . "\r\n" .
par :
     $headers = 'From: ' . $monemetteur . "\r\n" .
     'Reply-To: ' . $monreplyto . "\r\n" .
en ayant initialisé les variables $monemetteur et $monreplyto bien sur...

Modification d'un formulaire multi-destinataire

par christ » 01 juin 2006, 20:10

Bonjour,

J'ai un scrip de formulaire multi-destinataires.
J'essaye de le modifier pour la raison suivante :
lorsque l'internaute envoie un message au destinataire qu'il a sélectionné, ça fonctionne bien.
Lorque le destinataire reçoit le message, le nom de l'expéditeur est NOBODY avec l'adresse de l'administrateur (configuré pour les retour d'erreur).

Comment faire pour que le nom de l'expéditeur soit l'adresse de l'internaute qui a réellement envoyé le message.

J'ai modifié plusieurs paramètres mais sans succès, et je tatonne encore le php, donc...
si quelqu'un est intéressé par le script et aussi à m'aider,
le script est à cette adresse :

http://www.gitedureveur.com/contact_multi.zip

Merci

Christ