Formulaire de contact PHP

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 : Formulaire de contact PHP

Re: Formulaire de contact PHP

par Icyphenix » 29 nov. 2016, 14:13

Salut,
J'ai finalement réussi a ne plus avoir le message "veuillez remplir tous les champs" en englobant mon code php avec if (isset($_POST['envoyer'])) {} (excepté erreur et info). Crois-tu que ce message s'affiche du fait que j'utilise un serveur local ? (wamp) Car le mail émetteur je ne le connait pas par avance du fait qu'il s'agit du mail que l’utilisateur fournie sur le formulaire.

Re: Formulaire de contact PHP

par Naroth » 29 nov. 2016, 12:47

Bonjour,

Je pense que les modérateurs te metterons un pti encart te disant que le up est à bannir de ce forum.

Code : Tout sélectionner

Warning: mail(): SMTP server response: 501 5.1.0 Emetteur invalide. Invalid Sender.
Ce message d'erreur signifie que tu ne spécifie pas d'adresse mail émettrice ou que l'adresse mail émettrice n'est pas dans un format correct


Pour les names sans code difficile de te dire ce qui cloche mais vérifie que les noms sont bien les mêmes que ceux attendu par le post (c'est sensible à la casse)

Re: Formulaire de contact PHP

par Icyphenix » 29 nov. 2016, 11:53

Up ^^"

Re: Formulaire de contact PHP

par Icyphenix » 27 nov. 2016, 21:57

On m'a fait remarquer qu'il manquait les name dans les input xD C'est pour ça que ça marchait pas. Toutefois, j'ai encore le message "veuillez remplir tous les champs" qui apparaît au chargement de la page, et lorsque que j'envois les informations dans le formulaire, un autre message s'affiche : Warning: mail(): SMTP server response: 501 5.1.0 Emetteur invalide. Invalid Sender. OFR204_405 [405]

@two3d je pensais que les erreur/info ) NULL au début du script suffiraient o: Il me semble que l'accolade de l'email s’arrête juste avant le ELSE.

Re: Formulaire de contact PHP

par two3d » 27 nov. 2016, 13:41

Salut,

la condition du début:
if(!empty($_POST['prenom']) AND !empty($_POST['email']) AND !empty($_POST['message'])){
permet de demander si le formulaire à été envoyé, du moins, si les champs prenom, email et message sont pas vide (empty)

au passage empty permet de vérifier si une variable existe en plus de vérifier si elle est pas vide ;)


donc c'est normal qu'il affiche "veuillez remplir tous les champs" quand tu envoi rien (soit au début)

à première vue, il me semble que l'accolade pour la vérification de l'email n'est refermée nul part

ensuite, pour l'envoi du mail, tu peux faire une condition comme ceci:
if(mail($destinataire, $objet, $message, $entete)) { 
//alors echo success!
} else {
// erreur lors de l'envoi
}

Formulaire de contact PHP

par Icyphenix » 27 nov. 2016, 13:31

Bonjour,
Afin d'intégrer un formulaire de contact sur mon site web, j'ai suivi un tuto sur le sujet : https://www.tutoriels-video.fr/formu...ontact-en-php/
Toutefois, je n'obtiens pas le même résultat; le message "veuillez remplir tous les champs" apparaît déjà au chargement de la page, et lorsque je remplis tout et que j'envois, le message 'votre message a été envoyé" n’apparaît également pas.
Voici mon code :
<?php
$erreur = NULL;
$info = NULL;

if(!empty($_POST['prenom']) AND !empty($_POST['email']) AND !empty($_POST['message'])){
	extract($_POST);
	if(preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $email)){
	
	$prenom = htmlspecialchars(addslashes($prenom));
	$email = htmlspecialchars(addslashes($email));
	$sujet = htmlspecialchars(addslashes($sujet));
	$message = htmlspecialchars(addslashes($message));
	$destinataire = "[email protected]";
	$objet = "Formulaire de contact";
	$entete = 'From : '.$email.'';
	$message = 'Prenom : '.$prenom.' '."\n".' Sujet : '.$sujet.'  '."\n".' Message : '.$message.'';
	
	mail($destinataire, $objet, $message, $entete);
	
	$info = "Votre email à été envoyé";
	
	unset($_POST, $message, $prenom, $email, $sujet);

	}
	else{
	$erreur="Adresse email invalide";
	}
	
}
else{
	$erreur = "Veuillez remplir tous les champs";
}
?>
<form method="post" action="">
            
                <label for="prenom"></label>
                <input type="text" id="prenom" placeholder="Votre nom" value="<?php if(isset($_POST['prenom'])) echo htmlspecialchars($_POST['prenom']); ?>" />
                
                 <label for="email"></label>
                 <input type="email" id="email" placeholder="Votre e-mail" value="<?php if(isset($_POST['email'])) echo htmlspecialchars($_POST['email']); ?>" /><br/>
            
            <div class="clear"></div>
            <div>    
                <label for="sujet"></label>
                <input type="text" id="sujet" placeholder="Sujet" value="<?php if(isset($_POST['sujet'])) echo htmlspecialchars($_POST['sujet']); ?>" /><br/>
            </div>
            <div>
                <label for="message"></label>
                <textarea id="message" placeholder="Votre message"><?php if(isset($_POST['message'])) echo htmlspecialchars($_POST['message']); ?></textarea><br/>
            </div>
            <div class="button">
                <button type="submit" id="envoyer">Envoyer</button><br/><span style="color:red;"><?php echo $erreur; ?></span><span style="color:green"><?php echo $info;?></span>
            
            </div>
        </form>