Formulaire de contact

zhyrmar -  
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!

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

  1. hharchi9 Messages postés 693 Statut Membre 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
    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
    2. pierre_baine Messages postés 17 Statut Membre 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
      1. pierre_baine Messages postés 17 Statut Membre 12 > Pitet Messages postés 2845 Statut Membre
         
        Merci pour la précision, j'aurais personnellement utilisé isset ou count pour vérifier cela.
        0