[RESOLU] [REGLE] Récupération formulaire par mail.

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 : [RESOLU] [REGLE] Récupération formulaire par mail.

Re: Récupération formualaire par mail.

par vins1892 » 26 févr. 2011, 09:57

Le register global est sur off ....

Tout fonctionne nickel avec le $POST.

Un tout grand merci pour votre aide.

Re: Récupération formualaire par mail.

par moogli » 26 févr. 2011, 01:59

un s'agit du paramètre register globals, qui , s'il est a on induit le conportement que tu indique.

l'orde des variables (dans le sens ordre où elles "s'écrasent" est indiqué par variables_order = "GPCS" par défaut EGPCS
les lettres indiquent :
- GET
- POST
- COOKIE
- ENV
- SERVER

@+

Re: Récupération formualaire par mail.

par xTG » 25 févr. 2011, 17:56

Configuration du php.ini
Il fut un temps où était activé par défaut un système (dont je me souviens jamais du nom) qui permettait de récupérer les variables super-globales directement.

Une variable nom envoyée par POST devenait donc $nom
Une variable nom envoyée par GET devenait $nom
C'était un problème si on y faisait pas attention...

Depuis il faut passer par les tableaux super-globaux : $_POST, $_GET, $_SESSION, $_COOKIE

Donc dans ton cas ce n'est pas $champs1 mais $_POST['champs1'] par exemple.
Je te conseille vivement d'utiliser cette syntaxe à l'avenir. ;)
Car il est facile à un utilisateur d'appeler ton script par l'adresse : script.php?champs1=oulala
Et là ton champs1 n'aurait pas été égal à ce qui provenait du formulaire mais de l'adresse !

Re: Récupération formualaire par mail.

par vins1892 » 25 févr. 2011, 13:32

J'ai modifié les simples quotes et modifié le code:
[php]$msg = "Nom:\t$champ1\n";
$msg .= "Prénom:\t$champ2\n";
$msg .= "Adresse:\t$champ3\n";
$msg .= "Ville:\t$champ4\n";
$msg .= "CP:\t$champ5\n";
$msg .= "Pays:\t$champ6\n";
$msg .= "Province:\t$champ7\n";
$msg .= "Téléphone:\t$champ8\n";
$msg .= "E-Mail de contact:\t$zone_email\n";
$msg .= "Commentaires:\t$champ10\n";

$recipient = "[email protected]";
$subject = "Formulaire de contact";

$mailheaders = "From: $zone_email";
$mailheaders .= "Reply-To: $zone_email";

mail($recipient, $subject, $msg, $mailheaders);
?>

Cela fonctionne chez OVh, mais pas chez mon hébergeur one.com.
Si je mets le fichier.php chez mon hébergeur ovh, je reçois bien les variables par mail:

Nom: Dupont
Prénom: Jean
Adresse: route de Milan
Ville: Bruxelles
CP: 1050
Pays: Belgique

et si je passe par ONE.com, les variables ne sont pas interprétées:

Nom:
Prénom:
Adresse:
Ville:
CP:
Pays:

Sur leur site, ils disent ceci:

Pour faire fonctionner le script de FormMail, vous devez utiliser la partie de code suivante (qui n'est qu'un exemple - vous devez donc effectuer des corrections dans plusieurs champs) :

<FORM method="post" action="http://www.your-domain.com/cgi-bin/FormMail.pl">
<input type="hidden" name="recipient" value="[email protected]">
<input type="hidden" name="subject" value="You can write in here the subject text">
<input type="hidden" name="redirect" value="http://www.domain.com/newpage.html">
</FORM>

Merci pour vos éclaircissements.

Re: Récupération formualaire par mail.

par xTG » 25 févr. 2011, 11:42

Les simples quotes ne permettent pas d'interpréter les variables !
$var = "test";
echo 'Ceci est un $var !'; // Ceci est un $var!
echo "Ceci est un $var !"; // Ceci est un test !

Re: Récupération formualaire par mail.

par vins1892 » 25 févr. 2011, 10:46

Merci.

Je récupère bien un mail avec ce code:
<?php

mail('[email protected]', $champ1 . $champ2 . $champ3,"From: $zone_email\r\n"."Reply-To: $zone_email\r\n");

?>
Mais quand j'essaye de définir les variables:
<?php

$champ1 = 'prénom:\t$champ1\n';
$champ2 = 'nom\t$champ2\n';
$zone_email = 'mail de contact:\t$zone_email\';

mail('[email protected]', $champ1 . $champ2 . $champ3,"From: $zone_email\r\n"."Reply-To: $zone_email\r\n");

?>
Je ne reçois pas de mail.

Je viens d'activer l'affichage des erreurs php chez mon hébergeur, mais non encore effectif pour le moment ...

Merci pour votre aide.

Re: Récupération formualaire par mail.

par xTG » 22 févr. 2011, 10:16

Oui PHP aurait du te hurler dessus. ;)

Voilà pour la fonction :
mail('[email protected]', $champ1 . $champ2 . $champ3,"From: $zone_email\r\n"."Reply-To: $zone_email\r\n");
mail(mail, message, headers);

Re: Récupération formualaire par mail.

par stealth35 » 21 févr. 2011, 23:10

regarde bien le code de XTG, c'est des points pas des virgules pour séparer les champs, je te conseil de monter ton niveau d'erreur au maximum, parce que la PHP aurai du te dire qu'il y'a un probleme

Re: Récupération formualaire par mail.

par vins1892 » 21 févr. 2011, 23:07

Merci, j'ai essayé ceci:

mail('[email protected]', $champ1, $champ2, $champ3,"From: $zone_email\r\n"."Reply-To: $zone_email\r\n");

Simple quote pour le mail.

Rien dans mes spams ...

Re: Récupération formualaire par mail.

par xTG » 21 févr. 2011, 18:33

Dans la fonction mail, après $champs3 c'est pas une concaténation qu'il te faut vu que les headers additionnels sont un nouvel argument.
Après, as-tu regardé dans les spams ?

[REGLE] Récupération formulaire par mail.

par vins1892 » 21 févr. 2011, 18:27

Bonjour à tou,

ce sujet a déjà été traité à maintes reprises, mais j'ai beau consulter plusieurs tutos et rien n'y fait.

Ci-dessous, le code de mon formulaire de contact:
<table width="266" height="120" border="0" align="center">
	
    <tr>
      <td><font face="Verdana" size="2">Nom</font></td>

      <td><input name="champ1" type="text" size="20"></td>
    </tr>
    
    <tr>
      <td><font face="Verdana" size="2">Prénom</font></td>
      <td><input name="champ2" type="text" size="20"></td>
    </tr>

....
....
....
....
    
<tr>
      <td valign="top"><input name="nbre_champs_texte" type="hidden" id="nbre_champs_texte" value="10">

        <input name="nbre_zones_texte" type="hidden" value="1">
<input name="nbre_zone_email" type="hidden" value="1">

<input name="titre_champ1" type="hidden" value="Prénom"><input name="titre_champ2" type="hidden" value="Nom"><input name="titre_champ3" type="hidden" value="Rue et Numéro"><input name="titre_champ4" type="hidden" value="Ville"><input name="titre_champ5" type="hidden" value="Code postal"><input name="titre_champ6" type="hidden" value="Pays"><input name="titre_champ7" type="hidden" value="Province ou département"><input name="titre_champ8" type="hidden" value="Téléphone journalier"><input name="titre_champ9" type="hidden" value="Téléphone soir"><input name="titre_champ10" type="hidden" value="Numéro de Fax"><input name="titre_email" type="hidden" value="E-mail"><input name="titre_zone" type="hidden" value="Date de réservation + Vos observation éventuelles"></td>
      <td><div align="center">
<input type="reset" name="Reset" value="Effacer">          
<input type="submit" name="envoi" value="Envoyer">
        </div></td>
    </tr>
    </table>
</form>
le bout de code ci-dessous fonctionne pour afficher les variables à l'écran:
echo 'Votre prénom est '.$_POST['champ1'].' et votre nom est '.$_POST['champ2'];
Par contre, lorsque je souhaite les recevoir par mail avec:
mail("[email protected]", $champ1. $champ2. $champ3. "From: $zone_email\r\n"."Reply-To: $zone_email\r\n");
Je ne reçois pas de mail, malgré la bonne config du serveur smtp chez mon hébergeur.

Merci pour votre aide.