Création d'un formulaire de contact

ayaba13 Messages postés 3 Statut Membre -  
avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
N'arrivant pas à trouver l'information parmi tous les posts, pouvez-vous m'aider ? Merci par avance. Je souhaite insérer un formulaire de contact sur la page CONTACT de mon site et qui envoie les informations laissées par les internautes vers ma boîte mail. J'ai bien créé mon formulaire mais quand je le teste et que je clique sur ENVOYER ça m'ouvre une fenêtre vers ma boîte de messagerie et ce n'est pas ce que je veux. Merci pour votre aide.
Configuration: Windows XP Internet Explorer 7.0

5 réponses

  1. OpenSourceWay Messages postés 115 Statut Membre
     
    Bonjour,

    Je vous propose mon aide.
    Je vous envoie le code source de la page : http://oswkamata.leobaillard.org/Contact/

    C'est un formulaire de contact banal que j'ai copié de je ne sais où mais il fonctionne.
    Il vous suffit de copier le <form> </form> de la page index.php et de la mettre sur la page de votre formulaire de contact (.php ou .html, tout fonctionne)
    Pour la page traitement.php, il faut tout copier et tout mettre dans un fichier traitement.php dans le même dossier que la page contact.
    Il faut aussi vérifier que le serveur prend en compte la fonction mail php.

    Allez, j'envoi tout :

    Le formulaire :

    <form name="formulaire" action="traitement.php" method="post">
    <table>
    <tr><td class="droite">Votre nom : </td><td><input name='nom' type='text' size='50'></td></tr>
    <tr><td class="droite">Votre pr&eacute;nom : </td><td><input name='prenom' type='text' size='50'></td></tr>
    <tr><td class="droite">Votre email : </td><td><input name='email' type='text' size='50'></td></tr>
    <tr><td class="droite">Votre message : <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /></td><td><textarea name='texte' cols='65' rows='20'></textarea></td></tr>
    <tr><td></td><td>
    <input name='soumettre' type='submit' value='Envoyer'> <input name='annuler' type='reset' value='Annuler'></td></tr>
    </table>
    </form>


    Puis la page traitement.php :

    <?php
    	/*
    		********************************************************************************************
    		CONFIGURATION
    		********************************************************************************************
    	*/
    
    	// copie ? (envoie une copie au visiteur)
    	$copie = 'oui'; // 'oui' ou 'non'
    
    	// Messages de confirmation du mail
    	$message_envoye = "Le message à bien été envoyé";
    	$message_non_envoye = "L'envoi du mail a échoué, veuillez rééssayer SVP.";
    
    	// Messages d'erreur du formulaire
    	$message_erreur_formulaire = "Vous devez d'abord <a href=\"index.php\">envoyer le formulaire</a>. $dest";
    	$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
    
    	/*
    		********************************************************************************************
    		FIN DE LA CONFIGURATION
    		********************************************************************************************
    	*/
    
    	// on teste si le formulaire a été soumis
    	if (!isset($_POST['soumettre']))
    	{
    		// formulaire non envoyé
    		echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
    	}
    	else
    	{
    		/*
    		 * cette fonction sert à nettoyer et enregistrer un texte
    		 */
    		function Rec($text)
    		{
    			$text = trim($text); // delete white spaces after & before text
    			if (1 === get_magic_quotes_gpc())
    			{
    				$stripslashes = create_function('$txt', 'return stripslashes($txt);');
    			}
    			else
    			{
    				$stripslashes = create_function('$txt', 'return $txt;');
    			}
    
    			// magic quotes ?
    			$text = $stripslashes($text);
    			$text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
    			$text = nl2br($text);
    			return $text;
    		};
    
    		/*
    		 * Cette fonction sert à vérifier la syntaxe d'un email
    		 */
    		function IsEmail($email)
    		{
    			$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
    			return (eregi($pattern,$email)) ? true : false;
    		};
    
    		// formulaire envoyé, on récupère tous les champs.
    		$nom     = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
    		$prenom  = (isset($_POST['prenom']))  ? Rec($_POST['prenom'])  : '';
    		$email   = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
    		$objet   = "Lien site";
    		$message = (isset($_POST['texte']))   ? Rec($_POST['texte'])   : '';
    
    	
    		// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
    	
    		$destinataire = "opensourceway@oswkamata.leobaillard.org";
    		
    		// On va vérifier les variables et l'email ...
    		$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
    
    		if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))
    		{
    			// les 4 variables sont remplies, on génère puis envoie le mail
    			$headers = 'From: '.$nom.' '.$prenom.' <'.$email.'>' . "\r\n";
    
    			// envoyer une copie au visiteur ?
    			if ($copie == 'oui')
    			{
    				$cible = $destinataire.','.$email;
    			}
    			else
    			{
    				$cible = $destinataire;
    			};
    
    			// Remplacement de certains caractères spéciaux
    			$message = str_replace("&#039;","'",$message);
    			$message = str_replace("&#8217;","'",$message);
    			$message = str_replace("&quot;",'"',$message);
    			$message = str_replace('<br>','',$message);
    			$message = str_replace('<br />','',$message);
    			$message = str_replace("<","<",$message);
    			$message = str_replace(">",">",$message);
    			$message = str_replace("&amp;","&",$message);
    
    			// Envoi du mail
    			if (mail($cible, $objet, $message, $headers))
    			{
    				echo '<p>'.$message_envoye.'</p>'."\n";
    			}
    			else
    			{
    				echo '<p>'.$message_non_envoye.'</p>'."\n";
    			};
    		}
    		else
    		{
    			// une des 3 variables (ou plus) est vide ...
    			echo '<p>'.$message_formulaire_invalide.' <a href="index.php">Retour au formulaire</a></p>'."\n";
    		};
    	}; // fin du if (!isset($_POST['envoi']))
    ?>
    
    


    Infos sup :
    !! Il faut changer l'adresse mail du destinataire dans traitement.php
    Vous pouvez personnaliser les messages du haute de page en mettant une redirection vers la page voulu : header (location: http://hyerbhfbzervg);

    C'est à peu-près tout, le reste est dans les commentaires.

    OpenSourceWay
    0
    1. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
       
      Il ne faut pas utiliser les tableaux pour la mises en formes des formulaires !
      http://www.siteduzero.com/tutoriel-3-33971-aligner-ses-formulaires-sans-tableaux.html
      0
  2. OpenSourceWay Messages postés 115 Statut Membre
     
    Euh, oui.

    Merci pour cette astuce qui va me permettre de corriger des bugs pour des navigateurs différents de mozilla.

    A Bientôt
    0
  3. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  4. arthezius Messages postés 3756 Statut Membre 475
     
    Pour un formulaire de contact, il faut utiliser la fonction mail de PHP.
    https://www.commentcamarche.net/contents/800-php-mail-et-fonctions-reseau
    0