CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • 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
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : Formulaire de contact en PHP

DébutPage précedente
1
Page suivantePage suivante
Pseudo supprimé
Niveau 10
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
MP
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
MP
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é
Niveau 10
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
goodhelper goodhelper
MP
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é
Niveau 10
22 janvier 2017 à 12:38:49

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

goodhelper goodhelper
MP
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é
Niveau 10
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" ?

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : Thymotep
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment