CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Formulaire de contact en PHP

Pseudo supprimé
Pseudo supprimé 21 janvier 2017 à 23:36:17

Bonsoir,

Je souhaite faire un formulaire de contact sur un de mes sites. J'utilise actuellement le code ci dessous pour un autre de mes sites. Il est tout à fait fonctionnel.

<?php
/*
	********************************************************************************************
	CONFIGURATION
	********************************************************************************************
*/
// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
$destinataire = 'monadresse@gmail.com';
 
// copie ? (envoie une copie au visiteur)
$copie = 'oui'; // 'oui' ou 'non'
 
// Messages de confirmation du mail
$message_envoye = "Votre message nous est bien parvenu ! Vous allez être redirigé vers la page d'accueil.";
$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP. Vous allez être redirigé vers la page précédente.";
 
// Messages d'erreur du formulaire
$message_erreur_formulaire = "Vous devez d'abord envoyer le formulaire. Vous allez être redirigé vers la page précédente.";
$message_formulaire_invalide = "L'email n'a pas pu être envoyé. Tous les champs doivent être remplis et l'adresse email doit être exacte. Vous allez être redirigé vers la page précédente. ";
 
/*
	********************************************************************************************
	FIN DE LA CONFIGURATION
	********************************************************************************************
*/

// on teste si le formulaire a été soumis
if (!isset($_POST['envoi']))
{
	// formulaire non envoyé
	echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
}
else
{
	/*
	 * cette fonction sert à nettoyer et enregistrer un texte
	 */
	function Rec($text)
	{
		$text = htmlspecialchars(trim($text), ENT_QUOTES);
		if (1 === get_magic_quotes_gpc())
		{
			$text = stripslashes($text);
		}
 
		$text = nl2br($text);
		return $text;
	};
 
	/*
	 * Cette fonction sert à vérifier la syntaxe d'un email
	 */
	function IsEmail($email)
	{
		$value = preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $email);
		return (($value === 0) || ($value === false)) ? false : true;
	}
 
	// formulaire envoyé, on récupère tous les champs.
	$nom     = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
	$email   = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
	$objet   = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : '';
	$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
 
	// 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  = 'MIME-Version: 1.0' . "\r\n";
		$headers .= 'From:'.$nom.' <'.$email.'>' . "\r\n" .
				'Reply-To:'.$email. "\r\n" .
				'Content-Type: text/plain; charset="utf-8"; DelSp="Yes"; format=flowed '."\r\n" .
				'Content-Disposition: inline'. "\r\n" .
				'Content-Transfer-Encoding: 7bit'." \r\n" .
				'X-Mailer:PHP/'.phpversion();
	
		// 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("&lt;","<",$message);
		$message = str_replace("&gt;",">",$message);
		$message = str_replace("&amp;","&",$message);
 
		// Envoi du mail
		if (mail($cible, $objet, $message, $headers))
		{
			echo '<p>'.$message_envoye.'</p>'."\n";
			echo "<meta http-equiv=Refresh content=4;url=http://www.adressesite.com>";
		}
		else
		{
			echo '<p>'.$message_non_envoye.'</p>'."\n";
		};
	}
	else
	{
		// une des 3 variables (ou plus) est vide ...
		echo '<p>'.$message_formulaire_invalide.'</p>'."\n";
	};
}; // fin du if (!isset($_POST['envoi']))
?>

<script type="text/javascript">
    setTimeout(function() { window.history.go(-1); }, 5000);
</script>

Seulement, sur mon nouveau site, le formulaire ne contient pas de champs objet. Ne maitrisant pas le php, quelqu'un pourrait m'adapter le code afin que l'objet soit de la forme "Message de" .$nom.
Je vous en serais très reconnaissant.

Merci d'avance,
Adrien.

goodhelper
goodhelper
Niveau 7
21 janvier 2017 à 23:47:31

Je n'ai pas réellement compris ta question, pourrais-tu reformuler un peu mieu ? [[sticker:p/1kkr]]

goodhelper
goodhelper
Niveau 7
21 janvier 2017 à 23:51:57

Normalement si j'ai compris ce que tu voulais :

// 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 = 'MIME-Version: 1.0' . "\r\n";
$headers .= Message de :'.$nom.' ' . "\r\n" .

Message édité le 21 janvier 2017 à 23:52:33 par goodhelper
Pseudo supprimé
Pseudo supprimé 22 janvier 2017 à 11:43:46

Le code que j'ai posté marche quand il y a 4 champs à remplir:
- Nom
- Objet
- Email
- Message

Seulement, je veux l'utiliser pour un formulaire de contact où il n'y a que 3 champs:
- Nom
- Email
- Message

Je veux que la variable Objet soit toujours de la forme "Message de $Nom", et non récupérée depuis un champ du formulaire de contact.

J'espère avoir été un peu plus clair :-)

Message édité le 22 janvier 2017 à 11:45:02 par Pseudo supprimé
goodhelper
goodhelper
Niveau 7
22 janvier 2017 à 12:30:04

Tu ferras gaffe à la ligne 92 de ton script, tu as un " " "
Sinon essaye de remplacer
// Envoi du mail if (mail($cible, $objet, $message, $headers)) { echo '<p>'.$message_envoye.'</p>'."\n"; echo "<meta http-equiv=Refresh content=4;url=http://www.adressesite.com>"; }

Par

// Envoi du mail
if (mail($cible, $nom, $message, $headers)) { echo '<p>'.$message_envoye.'</p>'."\n"; echo "<meta http-equiv=Refresh content=4;url=http://www.adressesite.com>"; }

Pseudo supprimé
Pseudo supprimé 22 janvier 2017 à 12:38:49

Ca ne marche pas, ça indique le message $message_formulaire_invalide.

goodhelper
goodhelper
Niveau 7
22 janvier 2017 à 12:53:19

Il faut aussi remplacer

 if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))
    {
        // les 4 variables sont remplies, on génère puis envoie le mail
        $headers  = 'MIME-Version: 1.0' . "\r\n";
        $headers .= 'From:'.$nom.' <'.$email.'>' . "\r\n" .
                'Reply-To:'.$email. "\r\n" .
                'Content-Type: text/plain; charset="utf-8"; DelSp="Yes"; format=flowed '."\r\n" .
                'Content-Disposition: inline'. "\r\n" .
                'Content-Transfer-Encoding: 7bit'." \r\n" .
                'X-Mailer:PHP/'.phpversion();
    
        // envoyer une copie au visiteur ?
        if ($copie == 'oui')
        {
            $cible = $destinataire.','.$email;
        }
        else
        {
            $cible = $destinataire;
        };

Par

 if (($nom != '') && ($email != '') && ($message != ''))
    {
        // les 4 variables sont remplies, on génère puis envoie le mail
        $headers  = 'MIME-Version: 1.0' . "\r\n";
        $headers .= 'From:'.$nom.' <'.$email.'>' . "\r\n" .
                'Reply-To:'.$email. "\r\n" .
                'Content-Type: text/plain; charset="utf-8"; DelSp="Yes"; format=flowed '."\r\n" .
                'Content-Disposition: inline'. "\r\n" .
                'Content-Transfer-Encoding: 7bit'." \r\n" .
                'X-Mailer:PHP/'.phpversion();
    
        // envoyer une copie au visiteur ?
        if ($copie == 'oui')
        {
            $cible = $destinataire.','.$email;
        }
        else
        {
            $cible = $destinataire;
        };

Dans le cas où tu voudrais que la personne ne remplisse pas de champ objet

Pseudo supprimé
Pseudo supprimé 22 janvier 2017 à 13:00:09

Parfait ça marche ! Merci infiniment :-)
Pour l'instant l'objet du mail est identique à la variable $nom. Comment faire pour que l'objet soit de la forme "Message de $nom" ?

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment