[RESOLU] Récupération et mailing de données formulaire: champs vides et accentuation

Petit nouveau ! | 9 Messages

18 janv. 2016, 14:41

Bonjour,
Je suis ignare en php, c'est d'ailleurs pour cela que je poste ici. :mrgreen:
J'ai sur mon site une page contact.html (seul) pour le formulaire, qui envoie les données sur une page de confirmation.php pour la réception et le mailing (déjà je ne sais pas si c'est la meilleure formule qui soit...).

je souhaiterais que mon formulaire laisse la possibilité de laisser certains champs facultatifs, c'est à dire pouvoir recevoir le mail que ceux-ci soient remplis ou pas. Et ce n'est pas le cas... je ne reçois tout simplement plus rien DU TOUT quand le moindre champ est resté vide.
L'autre problème est l'accentuation pour le sujet du message, si par malheur il s'y trouve un ç, un é, è, à, etc... idem, plus rien n'arrive du tout.

J'ai fait tous les tests var_dump($_POST); la page .php semble pourtant tout recevoir correctement, mais la messagerie (yahoo), nada.

Voici mon formulaire html et ma page php:
<form  method="post" action="envoi.php" name="formsaisie" onsubmit="return validation() && verifmail();">
        <p><label>Nom*:</label><br>
        <input name="nom" class="formulaire" maxlength='30'></p>
        <p><label>Prénom:</label><br>
        <input name="prenom" class="formulaire" maxlength='30'></p>
        <p><label>Mail*:</label><br>
        <input name="mail" class="formulaire" maxlength='40'></p>
        <p><label>Adresse:</label><br>
        <textarea name="adresse" class="formulaire2" maxlength='120'></textarea></p>
        <p><label>Sujet*:</label><br>
        <input name="sujet" class="formulaire" maxlength='40'></p>
        <p><label>Message*:</label><br>
        <textarea name="message" class="formulaire2" maxlength='500'></textarea></p>
        <input  value="Envoyer" class="formulaire3" type="submit">
		<input value="Effacer" class="formulaire4" type="reset">
</form>
<?php 
	var_dump($_POST);	
	$to='[email protected]'; 
	$subject=$_POST['sujet']; 
	$headers='From: [email protected]'."\r\n";
	$headers.=$_POST['nom']."\r\n";
	$headers.=$_POST['prenom']."\r\n"; 
	$headers.=$_POST['mail']."\r\n"; 
	$headers.=$_POST['adresse'];	
	$content=$_POST['message']; 
	mail($to, $subject, $content, $headers, '-f [email protected]'); 
	?>
(Le contrôle des champs obligatoires est pour l'instant géré par javascript.)

Quelqu'un a t-il une idée de ce qui peut bloquer entre ma page d'envoi.php et yahoo mail, qui en l'état n'aime visiblement pas recevoir de champ vide? Comment autoriser ces fichus champs facultatifs à être envoyés comme des champs remplis, et pourquoi seul mon $subject serait-il réfractaire à l'accentuation...?

Je n'y comprends rien, un peu d'aide serait vraiment la bienvenue... 8-|

Eléphanteau du PHP | 16 Messages

18 janv. 2016, 17:02

Salut,

Tes headers n'ont pas de sens ici. Que souhaites-tu avoir en mettant ainsi le nom, prénom et l'adresse dans le header du mail ?
Le header a besoin que tu lui précises quelle valeur tu indiques à chaque fois, comme pour le "From" qui est OK par exemple.

Je te conseille simplement de relire la documentation de la fonction mail : http://php.net/manual/fr/function.mail.php

Petit nouveau ! | 9 Messages

18 janv. 2016, 17:43

Ah? pourtant quand tout est rempli je reçois tout sans anicroche.
Pour tester j'ai donc réarrangé comme cela:
<?php 
	$to='[email protected]'; 
	$subject=$_POST['sujet']; 
	$headers='From: [email protected]';
	$content=$_POST['nom']."\r\n";
	$content.=$_POST['prenom']."\r\n";
	$content.=$_POST['mail']."\r\n";
	$content.=$_POST['adresse']."\r\n";
	$content.=$_POST['message'];
	mail($to, $subject, $content, $headers, '-f [email protected]'); 
	?>
Pour être plus mieux dans les clous. :)
Et cela semble marcher, puisque maintenant le mail arrive (enfin un peu quand il veut), et m'affiche ce qui reste lorsque prenom et adresse ne sont pas remplis, dans les contents. Ce n'était pas le cas pour les headers, donc merci pour ça!
As-tu une idée concernant l'accentuation...?
Modifié en dernier par shuffle le 18 janv. 2016, 18:53, modifié 1 fois.

Petit nouveau ! | 9 Messages

18 janv. 2016, 18:21

En fait, c'est vrai que partout je vois des headers avec des valeurs déjà prérenseignées, une sorte de mail prêt à l'envoi.
Ce que je ne comprends pas, c'est que vu que c'est moi qui reçois le contenu du formulaire avec les infos persos de la personne qui l'a rempli, n'est t-il pas normal que je mette comme valeurs celles des champs dudit formulaire, 'nom', 'prenom', 'mail', etc...? Sinon je ne vois pas l'intérêt?
Et en fait je ne sais pas, deux messages sont arrivés depuis le changement, puis j'ai fait d'autres essais et là plus rien n'arrive. Qu'est-ce que ça me décourage...! :(