Formulaire de contact
zhyrmar
-
Pitet Messages postés 2845 Statut Membre -
Pitet Messages postés 2845 Statut Membre -
Bonjour,
Je ne m'y connais pas vraiment en php. J'ai trouvé sur le net un formulaire de contact, il fonctionne très bien, sauf les messages d'erreurs/confirmation d'envoi. Que l'envoi fonctionne ou non, rien n'apparaît.
Pourriez-vous m'aider en me disant ce qui cloche svp?
Merci!
Je ne m'y connais pas vraiment en php. J'ai trouvé sur le net un formulaire de contact, il fonctionne très bien, sauf les messages d'erreurs/confirmation d'envoi. Que l'envoi fonctionne ou non, rien n'apparaît.
Pourriez-vous m'aider en me disant ce qui cloche svp?
Merci!
<?php
/*
Credits: Bit Repository
URL: http://www.bitrepository.com/
*/
// change this email address to your own email id.
define("CONTACT_EMAIL", '***@***');
function ValidateEmail($email)
{
/*
(Name) Letters, Numbers, Dots, Hyphens and Underscores
(@ sign)
(Domain) (with possible subdomain(s) ).
Contains only letters, numbers, dots and hyphens (up to 255 characters)
(. sign)
(Extension) Letters only (up to 10 (can be increased in the future) characters)
*/
$regex = '/([a-z0-9_.-]+)'. # name
'@'. # at
'([a-z0-9.-]+){2,255}'. # domain & possibly subdomains
'.'. # period
'([a-z]+){2,10}/i'; # domain extension
if($email == '') {
return false;
}
else {
$eregi = preg_replace($regex, '', $email);
}
return empty($eregi) ? true : false;
} // end function ValidateEmail
error_reporting (E_ALL ^ E_NOTICE);
$post = (!empty($_POST)) ? true : false;
if($post) {
//include 'functions.php';
$name = stripslashes($_POST['name']);
$email = trim($_POST['email']);
$subject = stripslashes($_POST['subject']);
$message = stripslashes($_POST['message']);
$error = '';
// Check name
if(!$name) {
if (!$error) $error .= '';
$error .= 'Please enter your name. <br />';
}
// Check email
if(!$email) {
if (!$error) $error .= '';
$error .= 'Please enter an e-mail address. <br />';
}
if($email && !ValidateEmail($email)) {
if (!$error) $error .= '';
$error .= 'Please enter a valid e-mail address. <br />';
}
// Check message (length)
if(!$message) {
if (!$error) $error .= '';
$error .= "Please enter your message. <br />";
}
if(!$error) {
$mail = mail(CONTACT_EMAIL, $subject, $message,
"From: ".$name." <".$email.">\r\n"
."Reply-To: ".$email."\r\n"
."X-Mailer: PHP/" . phpversion());
if($mail) {
echo '<div class="secondary alert">Thank you for you enquiry. We will be in touch shortly.</div>';
} else {
echo '<div class="danger alert">Email was not send. Error! Please Try again.</div>';
}
}
else
{
$error .= '';
echo '<div class="danger alert">'.$error.'</div>';
}
}
?>
1 réponse
-
Bonsoir,
Après quelques test, il s'avèrent que cette ligne pose problème :$post = (!empty($_POST)) ? true : false;
Il faut la remplacer par :$post = (isset($_POST)) ? true : false;
-
J'ai apporté la modification, mais rien n'a changé...
Est-ce que le problème viendrait de la partie html de mon formulaire?
<form method="post" action="#" id="contact-form">
<ul class="ul-formulaire">
<li>
<p>
Tous les champs sont obligatoires.
</p>
</li>
<li class="field formulaire"><input class="input" type="text" placeholder="Nom" name="name" id="your-name"></li>
<li class="field formulaire"><input class="input" type="text" placeholder="Prénom" name="subject" id="your-subject"></li>
<li class="field formulaire"><input class="input" type="email" placeholder="Courriel" name="email" id="your-email"></li>
<li class="field formulaire"><textarea style="max-width:100%;" class="input textarea" placeholder="Votre message" rows="4" name="message" id="your-message"></textarea></li>
<li>
<!-- submit button -->
<input value="Envoyer" class="purple submit" id="submit" name="submit" type="submit">
</li>
</ul>
</form>
Merci de votre aide! -
Un empty() sur un post qui est array est effectivement absurde.
ajoute dans <form> la balise <input type="hidden" name="send" value="1" /> , ensuite dans ton code remplace:
$post = (!empty($_POST)) ? true : false;
if($post) {
par:
if($_POST['send'] == '1') {- La fonction empty() peut être utilisé sur un tableau pour vérifier que celui-ci est vide : https://www.php.net/manual/fr/function.empty.php#refsect1-function.empty-returnvalues
Par contre empty() ou isset() retourne déjà TRUE ou FALSE, donc pas besoin de condition ternaire pour récupérer ce booléen ;)
-
Pour être encore plus précis et faire plus simple, si on veux simplement savoir si un tableau est vide il suffit de faire :
if ($monTableau)
En effet un tableau vide équivaut à FALSE lors d'une conversion en booléen :)
https://www.php.net/manual/fr/language.types.boolean.php#language.types.boolean.casting
-