Formulaire de contact

zhyrmar -  
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   -
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!

<?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

hharchi9 Messages postés 567 Date d'inscription   Statut Membre Dernière intervention   24
 
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;
1
zhyrmar
 
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!
0
pierre_baine Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   12
 
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') {
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527 > pierre_baine Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
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 ;)
0
pierre_baine Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   12 > Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour la précision, j'aurais personnellement utilisé isset ou count pour vérifier cela.
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
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
0