Page 1 sur 1

Demande d'aide sur la fonction mail

Posté : 08 juin 2009, 22:59
par maximeus
Bonjour,
Je m'adresse à vous, car j'ai un souci avec l'envoi de mon formulaire mail.

Voici la situation:

La page contient un formulaire avec différents champs.

En début de page, j'ai le code suivant qui récupère dans la même page les données des champs envoyées:
<?php 
$prenom = $_POST['prenom'] ;
$nom = $_POST['nom'] ;
$adresse_rue = $_POST['adresse_rue'] ;
$adresse_cp = $_POST['adresse_cp'] ;
$adresse_loc = $_POST['adresse_loc'] ;
$telephone = $_POST['telephone'] ;
$email_client = $_POST['email_client'] ; 
$securite1 = $_POST['securite1'] ;  // --------------> Code de sécurité type captcha
$securite2 = $_POST['securite2'] ;  // --------------> Copie du code de sécurité type captcha
...
Plus loin dans la page, il y a une condition if qui vérifie les données et envoie le mail.
Si les champs du formulaire sont vides et/ou érronés (concerne uniquement les valeurs $securite1 et securite2 qui doivent être égales), le mail n'est pas envoyé et il affiche un message d'erreur.
Si tout est rempli, et correct, le mail doit être envoyé et afficher un message de type "Le mail a bien été envoyé. Nous vous en remercions.".
<?php 
if (!empty($prenom) AND !empty($nom) AND !empty($adresse_rue) AND !empty($adresse_cp) AND !empty($adresse_loc) AND !empty($telephone) AND !empty($email_client) AND ($securite1 != $securite2)) 
{ 
echo 'Les champs avec le signe * sont obligatoires. Merci de bien vouloir les remplir.'; 
} 
else 
{ 
mail($email_site, $sujet, $message, $headers);
echo 'Le mail a bien été envoyé. Nous vous en remercions.'; 
} 
?>
Or, lorsque je ne remplie aucun champ, il m'affiche quand même le message "Le mail a bien été envoyé. Nous vous en remercions.". Mais aucun mail n'est envoyé.
Si je remplie que le champ Email_client et sans remplir le champ du code de sécurité (captcha), le mail est envoyé.
Si je rempli tout, ainsi que le code de sécurité, tout le contenu du formulaire est correctement envoyé.

Pouvez-vous svp m'aider à trouver l'erreur?

Merci d'avance.

Posté : 08 juin 2009, 23:10
par charabia
Tu utilises !empty ce qui équivaut à un non vide. Ce n'est pas plutôt le contraire à utiliser ?

Posté : 09 juin 2009, 00:03
par maximeus
Effectivement, c'est un peu mieux sans le "!". Merci :)

Maintenant, si je charge la page la première fois, il m'affiche le message d'envoi.

Si ensuite, j'appuie sur le bouton Envoyer sans remplir de champ, il m'affiche le message d'erreur.

Et si je remplie qu'un seul champ et puis appuie sur Envoyer, il m'affiche le message d'envoi.

Il y a donc toujours un hic à quelque part...

Posté : 09 juin 2009, 07:42
par micetf
Ca ne serait pas plutôt OR que tu devrais utiliser dans ton test ?

Si un champ est vide OU un autre OU un autre ... alors ERREUR
Sinon c'est OK.

Fred

Posté : 09 juin 2009, 12:55
par enneite
<?php
if (empty($prenom) || empty($nom) || empty($adresse_rue) || empty($adresse_cp) || empty($adresse_loc) || empty($telephone) || empty($email_client) || ($securite1 != $securite2))
{
echo 'Les champs avec le signe * sont obligatoires. Merci de bien vouloir les remplir.';
}
else
{
$res=mail($email_site, $sujet, $message, $headers);

if($res==true)echo 'Le mail a bien été envoyé. Nous vous en remercions.';
else echo "impossible d'envoyer votre mail pour des raisons techinques";

}
?>
là cela doit mieux fonctionner?