Erreur envoi formulaire mail PhP
Résolu
NeoIshiara
Messages postés
12
Date d'inscription
Statut
Membre
Dernière intervention
-
NeoIshiara Messages postés 12 Date d'inscription Statut Membre Dernière intervention -
NeoIshiara Messages postés 12 Date d'inscription Statut Membre Dernière intervention -
Bonjour, je viens à vous pour vous présentez mon problème.
Je voulais créer un formulaire qui enverrais ensuite son contenu par mail
Le contenu s'envoi bel et bien, mais des messages d'erreurs s'affiche je ne trouve pas comment les réglés.
J'ai annoté les lignes en gras, italique souligné là il est censé y avoir un problème.
Le code html :
Le PhP :
Et voici mes messages d'erreur :
Je voulais créer un formulaire qui enverrais ensuite son contenu par mail
Le contenu s'envoi bel et bien, mais des messages d'erreurs s'affiche je ne trouve pas comment les réglés.
J'ai annoté les lignes en gras, italique souligné là il est censé y avoir un problème.
Le code html :
<form method="post" action="formmail.php"> <p class="titre">Coordonnées</p> <fieldset id="coordonnees"> <p id="civilite"><label>Civilité : </label> <input type="radio" name="civilite" value="M." />M. <input type="radio" name="civilite" value="Mlle" />Mlle <input type="radio" name="civilite" value="Mme" />Mme </p> <label>Nom : </label><input type="text" name="nom" size="30" /><br /> <label>Adresse : </label><input type="text" name="adresse" size="30" /><br /> <label>Code postal : </label><input type="text" name="codepostal" size="30" /><br /> <label>Ville : </label><input type="text" name="ville" size="30" /><br /> <label>Pays : </label> <select name="pays"> <option value="france">France</option> <option value="belgique">Belgique</option> <option value="suisse">Suisse</option> </select> <p id="interets"><label>Centres intérêts : </label> <input type="checkbox" name="interets[]" value="sport" />Sport <input type="checkbox" name="interets[]" value="cinema" />Cinéma<br /> <input type="checkbox" name="interets[]" value="internet" />Internet <input type="checkbox" name="interets[]" value="voyages" />Voyages </p> </fieldset> <p class="titre">Message</p> <fieldset id="message"> <textarea name="comments" rows="5" cols="40"></textarea> </fieldset> <p id="buttons"> <input href= "envoifichier.html" type="submit" value="Envoyer" /> <input type="reset" value="Recommencer" /> </p> </form>
Le PhP :
<?php $msg_erreur = "Erreur. Les champs suivants doivent être obligatoirement remplis :<br/><br/>"; $msg_ok = "Votre demande a bien ete prise en compte."; $message = $msg_erreur; define('MAIL_DESTINATAIRE','anthony.augereau@hncs-groupe.com'); // remplacer par votre email define('MAIL_SUJET','Message du formulaire de example.com'); // vérification des champs if (empty($_POST['civilite'])) $message .= "Votre civilité<br/>"; if (empty($_POST['nom'])) $message .= "Votre nom<br/>"; if (empty($_POST['adresse'])) $message .= "Votre adresse<br/>"; if (empty($_POST['codepostal'])) $message .= "Votre code postal<br/>"; if (empty($_POST['ville'])) $message .= "Votre ville<br/>"; if (empty($_POST['comments'])) $message .= "Votre message<br/>"; // si un champ est vide, on affiche le message d'erreur et on stoppe le script if (strlen($message) > strlen($msg_erreur)) { echo $message; die(); } // sinon c'est ok => on continue foreach($_POST as $index => $valeur) l.30{ $$index = stripslashes(trim($valeur)); } $interets = $_POST['interets']; $sqlinterets = ''; for ($i=0; $i<count($interets); $i++) { $sqlinterets .= $interets[$i]; $sqlinterets .= ', '; } //Préparation de l'entête du mail: $mail_entete = "MIME-Version: 1.0\r\n"; l.45 $mail_entete .= "From: {$_POST['nom']} " l.46 ."<{$_POST['email']}>\r\n"; $mail_entete .= 'Reply-To: '.$_POST['email']."\r\n"; $mail_entete .= 'Content-Type: text/plain; charset="iso-8859-1"'; $mail_entete .= "\r\nContent-Transfer-Encoding: 8bit\r\n"; $mail_entete .= 'X-Mailer:PHP/' . phpversion()."\r\n"; // préparation du corps du mail $mail_corps = "Message de : $civilite $nom\n"; $mail_corps .= "Adresse : $adresse, $codepostal $ville, $pays\n"; $mail_corps .= "Ses centres d'intérêts : $sqlinterets\n\n\n"; $mail_corps .= $comments; // envoi du mail if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete)) { //Le mail est bien expédié echo $msg_ok; } else { //Le mail n'a pas été expédié echo "Une erreur est survenue lors de l'envoi du formulaire par email"; } ?>
Et voici mes messages d'erreur :
Warning: trim() expects parameter 1 to be string, array given in C:\Program Files (x86)\EasyPHP-5.3.9\www\formmail.php on line 31 Notice: Undefined index: email in C:\Program Files (x86)\EasyPHP-5.3.9\www\formmail.php on line 45 Notice: Undefined index: email in C:\Program Files (x86)\EasyPHP-5.3.9\www\formmail.php on line 46 Votre demande a bien ete prise en compte.
A voir également:
- Erreur envoi formulaire mail PhP
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook - Guide
- Programmer envoi mail gmail - Guide
- Envoi mail cci - Guide
- Windows live mail - Télécharger - Mail
2 réponses
Bonjour,
Reprenons les problèmes point à point.
1) Warning: trim() expects parameter 1 to be string, array given
Ton formulaire HTML définit la champ « interets » comme étant un tableau.
Or dans ta boucle, tu agis comme si toutes les variables de _POST étaient des chaînes de caractères. Il faut différencier.
Tu peux corriger en testant le type de données, avec les fonctions is_array et is_string.
Par exemple :
Du coup, la ligne suivante (« $interets = $_POST['interets']; ») peut être supprimée.
2 et 3) Undefined index: email
Le champ EMAIL n'est pas défini dans ton formulaire... Donc forcément, quand tu appelles $_POST['email'] dans la page PHP, il dit qu'il ne connait pas.
Tu devrais soit supprimer les références à $_POST['email'] dans le php, soit rajouter un champ <input type='text' (ou 'hidden') name='email'> dans ton HTML.
Xavier
Reprenons les problèmes point à point.
1) Warning: trim() expects parameter 1 to be string, array given
Ton formulaire HTML définit la champ « interets » comme étant un tableau.
Or dans ta boucle, tu agis comme si toutes les variables de _POST étaient des chaînes de caractères. Il faut différencier.
Tu peux corriger en testant le type de données, avec les fonctions is_array et is_string.
Par exemple :
foreach($_POST as $index => $valeur) { if (is_string($valeur)) $$index = stripslashes(trim($valeur)); else if (is_array($valeur)) $$index = $valeur; }
Du coup, la ligne suivante (« $interets = $_POST['interets']; ») peut être supprimée.
2 et 3) Undefined index: email
Le champ EMAIL n'est pas défini dans ton formulaire... Donc forcément, quand tu appelles $_POST['email'] dans la page PHP, il dit qu'il ne connait pas.
Tu devrais soit supprimer les références à $_POST['email'] dans le php, soit rajouter un champ <input type='text' (ou 'hidden') name='email'> dans ton HTML.
Xavier