begin process at 2012 02 15 02:13:02
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

E-Mail / Messagerie

 > FORMMAIL SÉCURISÉ

FORMMAIL SÉCURISÉ


 Information sur la source

Note :
Aucune note
Catégorie :E-Mail / Messagerie Classé sous :formmail, sécurisé, multiple, email, messagerie Niveau :Initié Date de création :19/06/2007 Date de mise à jour :19/06/2007 11:09:56 Vu :9 846

Auteur : le rouge

Ecrire un message privé
Site perso
Commentaire sur cette source (16)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Script de formmail qui permet de recevoir un feedback des visiteurs de votre site... Le visiteur peut choisir entre plusieurs detinataire!

Source

  • <?php
  • // TITRE
  • echo"<h1>Contact</h1>\n";
  • // APPEL DES FONCTIONS
  • // AFFICHER
  • if(!$_POST)
  • {
  • formulaire_contact($connexion, $_POST);
  • }
  • // VERIFIER/ENVOYER
  • elseif($_POST)
  • {
  • // ON VERIFIE LES CHAMPS
  • if(verifier_contact($_POST))
  • {
  • envoyer_contact($connexion, $_POST);
  • }
  • else
  • {
  • formulaire_contact($connexion, $_POST);
  • }
  • }
  • // FORMULAIRE
  • function formulaire_contact($connexion, $_POST)
  • {
  • // ON DEFINIT LES VALEURS PAR DEFAUT
  • if(!($_POST))
  • {
  • $nom = 'Prénom et nom';
  • $adresse = 'Adresse';
  • $lieu = 'Code postal et lieu';
  • $email = '@';
  • $sujet = 'Sujet';
  • $texte = 'Texte';
  • $copie = 'on';
  • }
  • else
  • {
  • $nom = $_POST['nom'];
  • $adresse = $_POST['adresse'];
  • $lieu = $_POST['lieu'];
  • $email = $_POST['email'];
  • $sujet = $_POST['sujet'];
  • $texte = $_POST['texte'];
  • $texte = $_POST['copie'];
  • }
  • // FORMULAIRE
  • echo"<h2>Formulaire</h2>\n";
  • echo"<form action=\"contact.html\" method=\"post\">\n";
  • echo"<p><label for=\"contact\">Contact *</label><br />\n";
  • //CONTACTS
  • echo"<select name=\"contact\" id=\"contact\" title=\"Contact\" tabindex=\"1\">\n";
  • echo"<option selected=\"selected\">Webmaster</option>\n";
  • // AUTRES DESTINATAIRES VOIRE REQUETES MYSQL POUR SELECTIONNER DES GROUPES ETC.
  • echo"</select></p>\n";
  • // PRENOM ET NOM
  • echo"<p><label for=\"nom\">Prénom et nom *</label><br />\n";
  • echo"<input type=\"text\" name=\"nom\" id=\"nom\" value=\"".$nom."\" title=\"Prénom et nom\" tabindex=\"2\" onfocus=\"this.select();\" /></p>\n";
  • // ADRESSE
  • echo"<p><label for=\"adresse\">Adresse</label><br />\n";
  • echo"<input type=\"text\" name=\"adresse\" id=\"adresse\" value=\"".$adresse."\" title=\"Adresse\" tabindex=\"3\" onfocus=\"this.select();\" /></p>\n";
  • // CODE POSTAL ET LIEU
  • echo"<p><label for=\"lieu\">Code postal et lieu *</label><br />\n";
  • echo"<input type=\"text\" name=\"lieu\" id=\"lieu\" value=\"".$lieu."\" title=\"Lieu\" tabindex=\"4\" onfocus=\"this.select();\" /></p>\n";
  • // Email
  • echo"<p><label for=\"email\">Email *</label><br />\n";
  • echo"<input type=\"text\" name=\"email\" id=\"email\" value=\"".$email."\" title=\"Email\" tabindex=\"5\" onfocus=\"this.select();\" /></p>\n";
  • // SUJET
  • echo"<p><label for=\"sujet\">Sujet *</label><br />\n";
  • echo"<input type=\"text\" name=\"sujet\" id=\"sujet\" value=\"".$sujet."\" title=\"Sujet\" tabindex=\"6\" onfocus=\"this.select();\" /></p>\n";
  • // TEXTE
  • echo"<p><label for=\"texte\">Texte *</label><br />\n";
  • echo"<textarea name=\"texte\" id=\"texte\" cols=\"100\" rows=\"5\" title=\"Texte\" tabindex=\"7\" onfocus=\"this.select();\">".$texte."</textarea></p>\n";
  • // COPIE
  • echo"<p><input checked=\"checked\" type=\"checkbox\" name=\"copie\" id=\"copie\" value=\"".$copie."\" title=\"Recevoir une copie de l'email\" tabindex=\"8\" onfocus=\"this.select();\" /> <label for=\"copie\">Recevoir une copie de l'email</label></p>\n";
  • // CHAMPS OBLIGATOIRES
  • echo"<p>* Champs obligatoires</p>\n";
  • // ENVOYER/ANNULER
  • echo"<p><input type=\"submit\" value=\"Envoyer\" title=\"Envoyer\" tabindex=\"9\" /> <input type=\"reset\" value=\"Annuler\" title=\"Annuler\" tabindex=\"10\" /></p>\n";
  • echo"</form>\n";
  • }
  • // VERIFIER
  • function verifier_contact($_POST)
  • {
  • // VERIFICATION DES CHAINES DE CARACTERES
  • function verifier_chaines($chaine)
  • {
  • $mauvaises_chaines = array('content-type:', 'mime-version:', 'content-transfer-encoding:', 'bcc:', 'cc:');
  • foreach($mauvaises_chaines as $caracteres_inautorises)
  • {
  • if(strpos($chaine, $caracteres_inautorises) !== false)
  • {
  • return false;
  • }
  • }
  • return true;
  • }
  • // ON VERIFIE LES CHAMPS
  • // PRENOM ET NOM
  • if(!($_POST['nom']) || $_POST['nom'] == 'Prénom et nom' ||!verifier_chaines($_POST['nom']))
  • {
  • $erreur = '"Prénom et nom"';
  • }
  • // ADRESSE
  • if(!verifier_chaines($_POST['adresse']))
  • {
  • if(($erreur))
  • {
  • $erreur = ''.$erreur.', "Adresse"';
  • }
  • else
  • {
  • $erreur = ''.$erreur.'"Adresse"';
  • }
  • }
  • // LIEU
  • if(!($_POST['lieu']) || $_POST['lieu'] == 'Code postal et lieu' ||!verifier_chaines($_POST['lieu']))
  • {
  • if(($erreur))
  • {
  • $erreur = ''.$erreur.', "Code postal et lieu"';
  • }
  • else
  • {
  • $erreur = ''.$erreur.'"Code postal et lieu"';
  • }
  • }
  • // EMAIL
  • if(!($_POST['email']) || $_POST['email'] == '@' || !preg_match('/^[A-z0-9][\w\.\-]*@[A-z0-9][\w\.\-]+\.[A-z0-9]{2,6}$/', $_POST['email']) ||!verifier_chaines($_POST['email']))
  • {
  • if(($erreur))
  • {
  • $erreur = ''.$erreur.', "Email"';
  • }
  • else
  • {
  • $erreur = ''.$erreur.'"Email"';
  • }
  • }
  • // SUJET
  • if(!($_POST['sujet']) ||!verifier_chaines($_POST['sujet']))
  • {
  • if(($erreur))
  • {
  • $erreur = ''.$erreur.', "Sujet"';
  • }
  • else
  • {
  • $erreur = ''.$erreur.'"Sujet"';
  • }
  • }
  • // TEXTE
  • if(!($_POST['texte']) || $_POST['texte'] == 'Texte' ||!verifier_chaines($_POST['texte']))
  • {
  • if(($erreur))
  • {
  • $erreur = ''.$erreur.', "Texte"';
  • }
  • else
  • {
  • $erreur = ''.$erreur.'"Texte"';
  • }
  • }
  • // SI DES CHOSES NE SONT PAS CORRECTES, ON AFFICHE UN MESSAGE D'ERREUR ET ON RETOURNE "FALSE"
  • if(($erreur))
  • {
  • // POUR UN CHAMP INVALIDE
  • if(!strrpos($erreur, ','))
  • {
  • echo"<p>Le champ ".$erreur." est invalide.</p>\n";
  • }
  • // POUR PLUSIEURS CHAMPS INVALIDES
  • else
  • {
  • // ON REMPLACE LA DERNIERE VIRGULE PAR ET
  • $nouvelle_erreur = substr_replace($erreur, ' et', strrpos($erreur,','), '1');
  • // ON RETOURNE LA NOUVELLE ERREUR
  • echo"<p>Les champs ".$nouvelle_erreur." sont invalides.</p>\n";
  • }
  • // ON RETOURNE L'ERREUR
  • return false;
  • }
  • // ON ENVOIE LE MAIL
  • return true;
  • }
  • // ENVOYER
  • function envoyer_contact($connexion, $_POST)
  • {
  • // CHOIX DU DESTINATAIRE
  • if($_POST['contact'] == 'Webmaster')
  • {
  • $dest = 'webmaster@tonsite.com';
  • }
  • else
  • {
  • // AUTRES DESTINATAIRES VOIRE REQUETES MYSQL POUR SELECTIONNER DES GROUPES ETC.
  • }
  • // ON PREPARE L'ENTETE
  • // AVEC COPIE
  • if(($_POST['copie']))
  • {
  • $entete = "bcc: ".$_POST['email']."\r\n";
  • $entete .= "from: Ton site - ".$_POST['nom']." <".$_POST['email'].">\r\n";
  • }
  • // SANS COPIE
  • elseif(!($_POST['copie']))
  • {
  • $entete = "from: Ton site - ".$_POST['nom']." <".$_POST['email'].">\r\n";
  • }
  • $entete .= "reply-to: ".$_POST['nom']." <".$_POST['email'].">\r\n";
  • $entete .= "return-path: Tonsite - ".$_POST['nom']." <".$_POST['email'].">\r\n";
  • $entete .= "mime-version: 1.0";
  • $entete .= "content-type: text/plain; charset=iso-8859-1";
  • $entete .= "x-mailer: php/" . phpversion();
  • $entete .= "x-sender: Ton site - ".$_POST['nom']." <".$_POST['email'].">";
  • $entete .= "x-auth-smtp-user: localhost";
  • // PUIS LE MESSAGE
  • // NOM ET PRENOM
  • $message = "Prénom et nom : ".$_POST['nom']."\n\n";
  • // SI IL Y A UNE ADRESSE
  • if(($_POST['adresse']) && $_POST['adresse'] != 'Adresse')
  • {
  • $_POST['lieu'] = "".$_POST['adresse'].", ".$_POST['lieu']."";
  • }
  • // LIEU
  • $message .= "Lieu : ".$_POST['lieu']."\n\n";
  • // MESSAGE
  • $message .= "Message : \n\n".$_POST['texte']."";
  • // SI TOUT VA BIEN ON ENVOIE LE MAIL
  • if(mail($dest, $_POST['sujet'], $message, $entete))
  • {
  • // MESSAGE DE CONFIRMATION
  • echo"<p>Ton message a bien été envoyé.</h2>\n";
  • echo"<h3>Infos détaillées</h3>\n";
  • echo"<ul />\n";
  • echo"<li>Contact : ".htmlentities($_POST['contact'])."</li>\n";
  • echo"<li>Prénom et nom : ".htmlentities($_POST['nom'])."</li>\n";
  • echo"<li>Code postal et lieu : ".htmlentities($_POST['lieu'])."</li>\n";
  • echo"<li>Email : ".$_POST['email']."</li>\n";
  • echo"<li>Sujet : ".htmlentities($_POST['sujet'])."</li>\n";
  • // AVEC COPIE
  • if(($_POST['copie']))
  • {
  • echo"<li><span>Copie :</span> Oui</li>\n";
  • }
  • // SANS COPIE
  • elseif(!($_POST['copie']))
  • {
  • echo"<li><span>Copie :</span> Non</li>\n";
  • }
  • echo"</ul>\n";
  • echo"<h3>Message</h3>\n";
  • echo"<p>".nl2br(htmlentities($_POST['texte']))."</p>\n";
  • // RETOUR
  • echo"<p><a href=\"contact.html\" title=\"Retour\">Retour</a></p>\n";
  • }
  • }
  • ?>
<?php
 
// TITRE

echo"<h1>Contact</h1>\n";

// APPEL DES FONCTIONS

// AFFICHER

if(!$_POST)
{
	formulaire_contact($connexion, $_POST);
}

// VERIFIER/ENVOYER

elseif($_POST)
{
	// ON VERIFIE LES CHAMPS

	if(verifier_contact($_POST))
	{
		envoyer_contact($connexion, $_POST);
	}
	else
	{
		formulaire_contact($connexion, $_POST);
	}
}

// FORMULAIRE

function formulaire_contact($connexion, $_POST)
{
	// ON DEFINIT LES VALEURS PAR DEFAUT

	if(!($_POST))
	{
		$nom = 'Prénom et nom';
		$adresse = 'Adresse';
		$lieu = 'Code postal et lieu';
		$email = '@';
		$sujet = 'Sujet';
		$texte = 'Texte';
		$copie = 'on';
	}
	else
	{
		$nom = $_POST['nom'];
		$adresse = $_POST['adresse'];
		$lieu = $_POST['lieu'];
		$email = $_POST['email'];
		$sujet = $_POST['sujet'];
		$texte = $_POST['texte'];
		$texte = $_POST['copie'];
	}

	// FORMULAIRE

	echo"<h2>Formulaire</h2>\n";

	echo"<form action=\"contact.html\" method=\"post\">\n";

	echo"<p><label for=\"contact\">Contact *</label><br />\n";

	//CONTACTS

	echo"<select name=\"contact\" id=\"contact\" title=\"Contact\" tabindex=\"1\">\n";
	echo"<option selected=\"selected\">Webmaster</option>\n";

	// AUTRES DESTINATAIRES VOIRE REQUETES MYSQL POUR SELECTIONNER DES GROUPES ETC.

	echo"</select></p>\n";

	// PRENOM ET NOM

	echo"<p><label for=\"nom\">Prénom et nom *</label><br />\n";
	echo"<input type=\"text\" name=\"nom\" id=\"nom\" value=\"".$nom."\" title=\"Prénom et nom\" tabindex=\"2\" onfocus=\"this.select();\" /></p>\n";

	// ADRESSE

	echo"<p><label for=\"adresse\">Adresse</label><br />\n";
	echo"<input type=\"text\" name=\"adresse\" id=\"adresse\" value=\"".$adresse."\" title=\"Adresse\" tabindex=\"3\" onfocus=\"this.select();\" /></p>\n";

	// CODE POSTAL ET LIEU

	echo"<p><label for=\"lieu\">Code postal et lieu *</label><br />\n";
	echo"<input type=\"text\" name=\"lieu\" id=\"lieu\" value=\"".$lieu."\" title=\"Lieu\" tabindex=\"4\" onfocus=\"this.select();\" /></p>\n";

	// Email

	echo"<p><label for=\"email\">Email *</label><br />\n";
	echo"<input type=\"text\" name=\"email\" id=\"email\" value=\"".$email."\" title=\"Email\" tabindex=\"5\" onfocus=\"this.select();\" /></p>\n";

	// SUJET

	echo"<p><label for=\"sujet\">Sujet *</label><br />\n";
	echo"<input type=\"text\" name=\"sujet\" id=\"sujet\" value=\"".$sujet."\" title=\"Sujet\" tabindex=\"6\" onfocus=\"this.select();\" /></p>\n";

	// TEXTE

	echo"<p><label for=\"texte\">Texte *</label><br />\n";

	echo"<textarea name=\"texte\" id=\"texte\" cols=\"100\" rows=\"5\" title=\"Texte\" tabindex=\"7\" onfocus=\"this.select();\">".$texte."</textarea></p>\n";

	// COPIE

	echo"<p><input checked=\"checked\" type=\"checkbox\" name=\"copie\" id=\"copie\" value=\"".$copie."\" title=\"Recevoir une copie de l'email\" tabindex=\"8\" onfocus=\"this.select();\" /> <label for=\"copie\">Recevoir une copie de l'email</label></p>\n";

	// CHAMPS OBLIGATOIRES

	echo"<p>* Champs obligatoires</p>\n";

	// ENVOYER/ANNULER

	echo"<p><input type=\"submit\" value=\"Envoyer\" title=\"Envoyer\" tabindex=\"9\" /> <input type=\"reset\" value=\"Annuler\" title=\"Annuler\" tabindex=\"10\" /></p>\n";

	echo"</form>\n";
}

// VERIFIER

function verifier_contact($_POST)
{
	// VERIFICATION DES CHAINES DE CARACTERES

	function verifier_chaines($chaine)
	{
		$mauvaises_chaines = array('content-type:', 'mime-version:', 'content-transfer-encoding:', 'bcc:', 'cc:');

		foreach($mauvaises_chaines as $caracteres_inautorises)
		{
			if(strpos($chaine, $caracteres_inautorises) !== false)
			{
				return false;
			}
		}
		return true;
	}

	// ON VERIFIE LES CHAMPS

	// PRENOM ET NOM

	if(!($_POST['nom']) || $_POST['nom'] == 'Prénom et nom' ||!verifier_chaines($_POST['nom']))
	{
		$erreur = '"Prénom et nom"';
	}

	// ADRESSE

	if(!verifier_chaines($_POST['adresse']))
	{
		if(($erreur))
		{
			$erreur = ''.$erreur.', "Adresse"';
		}
		else
		{
			$erreur = ''.$erreur.'"Adresse"';
		}
	}

	// LIEU

	if(!($_POST['lieu']) || $_POST['lieu'] == 'Code postal et lieu' ||!verifier_chaines($_POST['lieu']))
	{
		if(($erreur))
		{
			$erreur = ''.$erreur.', "Code postal et lieu"';
		}
		else
		{
			$erreur = ''.$erreur.'"Code postal et lieu"';
		}
	}

	// EMAIL

	if(!($_POST['email']) || $_POST['email'] == '@' || !preg_match('/^[A-z0-9][\w\.\-]*@[A-z0-9][\w\.\-]+\.[A-z0-9]{2,6}$/', $_POST['email']) ||!verifier_chaines($_POST['email']))
	{
		if(($erreur))
		{
			$erreur = ''.$erreur.', "Email"';
		}
		else
		{
			$erreur = ''.$erreur.'"Email"';
		}
	}

	// SUJET

	if(!($_POST['sujet']) ||!verifier_chaines($_POST['sujet']))
	{
		if(($erreur))
		{
			$erreur = ''.$erreur.', "Sujet"';
		}
		else
		{
			$erreur = ''.$erreur.'"Sujet"';
		}
	}

	// TEXTE

	if(!($_POST['texte']) || $_POST['texte'] == 'Texte' ||!verifier_chaines($_POST['texte']))
	{
		if(($erreur))
		{
			$erreur = ''.$erreur.', "Texte"';
		}
		else
		{
			$erreur = ''.$erreur.'"Texte"';
		}
	}

	// SI DES CHOSES NE SONT PAS CORRECTES, ON AFFICHE UN MESSAGE D'ERREUR ET ON RETOURNE "FALSE"

	if(($erreur))
	{
		// POUR UN CHAMP INVALIDE

		if(!strrpos($erreur, ','))
		{
			echo"<p>Le champ ".$erreur." est invalide.</p>\n";
		}

		// POUR PLUSIEURS CHAMPS INVALIDES

		else
		{
			// ON REMPLACE LA DERNIERE VIRGULE PAR ET

			$nouvelle_erreur = substr_replace($erreur, ' et', strrpos($erreur,','), '1');

			// ON RETOURNE LA NOUVELLE ERREUR

			echo"<p>Les champs ".$nouvelle_erreur." sont invalides.</p>\n";
		}

		// ON RETOURNE L'ERREUR
		
		return false;
	}

	// ON ENVOIE LE MAIL

	return true;
}

// ENVOYER

function envoyer_contact($connexion, $_POST)
{
	// CHOIX DU DESTINATAIRE

	if($_POST['contact'] == 'Webmaster')
	{
		$dest = 'webmaster@tonsite.com';
	}

	else
	{
		// AUTRES DESTINATAIRES VOIRE REQUETES MYSQL POUR SELECTIONNER DES GROUPES ETC.
		
	}

	// ON PREPARE L'ENTETE

	// AVEC COPIE

	if(($_POST['copie']))
	{
		$entete = "bcc: ".$_POST['email']."\r\n";
		$entete .= "from: Ton site - ".$_POST['nom']." <".$_POST['email'].">\r\n";
	}

	// SANS COPIE

	elseif(!($_POST['copie']))
	{
		$entete = "from: Ton site - ".$_POST['nom']." <".$_POST['email'].">\r\n";
	}

	$entete .= "reply-to: ".$_POST['nom']." <".$_POST['email'].">\r\n";
	$entete .= "return-path: Tonsite - ".$_POST['nom']." <".$_POST['email'].">\r\n";
	$entete .= "mime-version: 1.0";
	$entete .= "content-type: text/plain; charset=iso-8859-1";
	$entete .= "x-mailer: php/" . phpversion();
	$entete .= "x-sender: Ton site - ".$_POST['nom']." <".$_POST['email'].">";
	$entete .= "x-auth-smtp-user: localhost";

	// PUIS LE MESSAGE

	// NOM ET PRENOM

	$message = "Prénom et nom : ".$_POST['nom']."\n\n";

	// SI IL Y A UNE ADRESSE

	if(($_POST['adresse']) && $_POST['adresse'] != 'Adresse')
	{
		$_POST['lieu'] = "".$_POST['adresse'].", ".$_POST['lieu']."";
	}

	// LIEU

	$message .= "Lieu : ".$_POST['lieu']."\n\n";

	// MESSAGE

	$message .= "Message : \n\n".$_POST['texte']."";

	// SI TOUT VA BIEN ON ENVOIE LE MAIL

	if(mail($dest, $_POST['sujet'], $message, $entete))
	{
		// MESSAGE DE CONFIRMATION

		echo"<p>Ton message a bien été envoyé.</h2>\n";

		echo"<h3>Infos détaillées</h3>\n";

		echo"<ul />\n";
		echo"<li>Contact : ".htmlentities($_POST['contact'])."</li>\n";
		echo"<li>Prénom et nom : ".htmlentities($_POST['nom'])."</li>\n";
		echo"<li>Code postal et lieu : ".htmlentities($_POST['lieu'])."</li>\n";
		echo"<li>Email : ".$_POST['email']."</li>\n";
		echo"<li>Sujet : ".htmlentities($_POST['sujet'])."</li>\n";

		// AVEC COPIE

		if(($_POST['copie']))
		{
			echo"<li><span>Copie :</span> Oui</li>\n";
		}

		// SANS COPIE

		elseif(!($_POST['copie']))
		{
			echo"<li><span>Copie :</span> Non</li>\n";
		}

		echo"</ul>\n";

		echo"<h3>Message</h3>\n";

		echo"<p>".nl2br(htmlentities($_POST['texte']))."</p>\n";

		// RETOUR

		echo"<p><a href=\"contact.html\" title=\"Retour\">Retour</a></p>\n";
	}
}

?>

 Conclusion

Il ne vous reste plus qu'à faire un design et à créer un htacces pour l'url rewriting!!


 Historique

19 juin 2007 11:09:57 :
Pas vraiment de mise à jour, juste un ajoute de capture d'écran...

 Sources de la même categorie

Source avec Zip Source avec une capture FORM TO MAIL AVEC PROTECTION PAR TOKEN ET CAPTCHA CONTRÔLES ... par cod57
Source avec Zip Source avec une capture FORMULAIRE VERS COURRIEL BASIQUE AVEC CONTRÔLE CAPTCHA ANTI ... par cod57
Source avec Zip CHAT EN PHP ET JQUERY par pitchoubrazil
Source avec Zip Source avec une capture FORMULAIRE DE CHOIX MULTI-CONTACT VALIDE XHTML 1.0 TRANSITIO... par aventurier19
Source avec Zip Source avec une capture WEB MESSENGER par EvildarkEurope

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture FORMMAIL TRÈS SIMPLE ET PERSONALISABLE par vipben
Source avec Zip Source avec une capture CLASSE DE MESSAGERIE par janhsh
Source avec Zip CLASS D' ENVOIE DE MAIL EN SMTP par ImmortalPC
ENVOI DE MAIL (À X DESTINATAIRES- 4 POUR CET EXEMPLE) AVEC P... par chrisvach
Source avec Zip Source avec une capture PARTAGE DE FICHIERS par bmwalido

Commentaires et avis

Commentaire de coucou747 le 19/06/2007 11:53:14 administrateur CS

function verifier_contact($_POST)
j'ai survolle le code, mettre $_POST comme nom de param, c'est pas une bonne idee, vu que $_POST est une superglobale...

sinon, tu utilises plusieurs echo la ou un seul suffit, et tu devrais mettre des ' a la place des "

if(($_POST['copie'])) => t'as un couple de parentheses qui ne sert a rien, et il manque la fonction isset (ca donne : if (isset($_POST['copie']))  )

idem pour tes autres verifications de variables

Commentaire de kankrelune le 19/06/2007 12:45:00

Pareil j'ai juste survolé le code mais je vois pas en quoi c'est sécurisé... tu as une faille à l'injection de header... .. .

Sinon quel intérêt de déclarer des fonction dans le corps d'une fonction... .. ?

@ tchaOo°

Commentaire de le rouge le 19/06/2007 16:32:39

Yop

Et comment faire pour ne pas avoir cette faille à l'injection?
L'interêt d'une fonction dans une autre, ben je l'utilise dans cette dite fonction...

++

Commentaire de kankrelune le 21/06/2007 18:47:59

contre l'injection... une recherche et tu trouvera tout ce qu'il te faut... en gros tu cherche la présence de caractères CRLF (retour de charriot et retour à la ligne)

"L'interêt d'une fonction dans une autre, ben je l'utilise dans cette dite fonction..."

Oui sauf que tu la redéclare à chaque utilisation de la dite fonction donc externalise la elle ne sera déclarée qu'une fois... .. .

@ tchaOo°

Commentaire de le rouge le 22/06/2007 09:46:07

Ok, je me renseigne pour l'injection, mais il me semblait que justement c'est déjà sécurisé là-dessus. Si tu avais quelques précisions?

Pour ma fonction dans un autre, elle n'est pas déclaré souvent! Enfin, je crois pas, je regarde et je mets à jour après mes examens de Biologie, donc dès le 9 juillet!

Merci

Commentaire de ricky03 le 25/06/2007 23:08:50

Pas mal ce code. Mais comment pourrait-on corriger ce problème d'injection? Si tu as une idée Kankrelune, tu pourrais la dire?

Qu'entends-tu par externaliser?

Commentaire de le rouge le 25/06/2007 23:18:27

Sortir la fonction de vérification des champs (pour les caractères illégaux dans un mail, justement contre l'injection...)

++

Commentaire de le rouge le 05/07/2007 08:41:43

Hello.

Kankrelune, permets-moi de te demander un petit coup de main sur l'injection afin d'améliorer ma source, je n'ai pas trouvé grand chose sur les retour chariot et autre...

Merci.

Commentaire de le rouge le 06/07/2007 13:05:54

Up,

Et si pour les entêtes, je remplace comme cela :

// ON PREPARE L'ENTETE

// AVEC COPIE

if(($_POST['copie']))
{
$entete = 'bcc: '.str_replace("\r\n", null, $_GET['email']). "\r\n";
$entete .= 'from: Ton site - '.str_replace("\r\n", null, $_POST['nom']).' <'.str_replace("\r\n", null, $_POST['nom'])>."\r\n";
}

// SANS COPIE

elseif(!($_POST['copie']))
{
$entete = 'from: Ton site - '.str_replace("\r\n", null, $_POST['nom']).' <'.str_replace("\r\n", null, $_POST['nom'])>."\r\n";
}
$entete .= 'reply-to: '.str_replace("\r\n", null, $_POST['nom']).' <'.str_replace("\r\n", null, $_POST['nom'])>."\r\n";
$entete .= 'return-path: Site de Hauterive - '.str_replace("\r\n", null, $_POST['nom']).' <'.str_replace("\r\n", null, $_POST['nom'])>."\r\n";
$entete .= 'mime-version: 1.0'."\r\n";
$entete .= 'content-type: text/html; charset=iso-8859-1'."\r\n";
$entete .= 'x-mailer: php/'.phpversion();.''."\r\n";
$entete .= 'x-sender: Site de Hauterive - '.str_replace("\r\n", null, $_POST['nom']).' <'.str_replace("\r\n", null, $_POST['nom'])>."\r\n";
$entete .= 'x-auth-smtp-user: localhost'."\r\n";

++

Commentaire de le rouge le 06/07/2007 13:06:55

Up,

Et si pour les entêtes, je remplace comme cela :

// ON PREPARE L'ENTETE

// AVEC COPIE

if(($_POST['copie']))
{
$entete = 'bcc: '.str_replace("\r\n", null, $_GET['email']). "\r\n";
$entete .= 'from: Ton site - '.str_replace("\r\n", null, $_POST['nom']).' <'.str_replace("\r\n", null, $_POST['nom'])>."\r\n";
}

// SANS COPIE

elseif(!($_POST['copie']))
{
$entete = 'from: Ton site - '.str_replace("\r\n", null, $_POST['nom']).' <'.str_replace("\r\n", null, $_POST['nom'])>."\r\n";
}
$entete .= 'reply-to: '.str_replace("\r\n", null, $_POST['nom']).' <'.str_replace("\r\n", null, $_POST['nom'])>."\r\n";
$entete .= 'return-path: Site de Hauterive - '.str_replace("\r\n", null, $_POST['nom']).' <'.str_replace("\r\n", null, $_POST['nom'])>."\r\n";
$entete .= 'mime-version: 1.0'."\r\n";
$entete .= 'content-type: text/html; charset=iso-8859-1'."\r\n";
$entete .= 'x-mailer: php/'.phpversion();.''."\r\n";
$entete .= 'x-sender: Site de Hauterive - '.str_replace("\r\n", null, $_POST['nom']).' <'.str_replace("\r\n", null, $_POST['nom'])>."\r\n";
$entete .= 'x-auth-smtp-user: localhost'."\r\n";

++

Commentaire de le rouge le 06/07/2007 13:33:50

Up,

Et si pour les entêtes, je remplace comme cela :

// ON PREPARE L'ENTETE

// AVEC COPIE

if(($_POST['copie']))
{
$entete = 'bcc: '.str_replace("\r\n", null, $_GET['email']). "\r\n";
$entete .= 'from: Ton site - '.str_replace("\r\n", null, $_POST['nom']).' <'.str_replace("\r\n", null, $_POST['nom'])>."\r\n";
}

// SANS COPIE

elseif(!($_POST['copie']))
{
$entete = 'from: Ton site - '.str_replace("\r\n", null, $_POST['nom']).' <'.str_replace("\r\n", null, $_POST['nom'])>."\r\n";
}
$entete .= 'reply-to: '.str_replace("\r\n", null, $_POST['nom']).' <'.str_replace("\r\n", null, $_POST['nom'])>."\r\n";
$entete .= 'return-path: Site de Hauterive - '.str_replace("\r\n", null, $_POST['nom']).' <'.str_replace("\r\n", null, $_POST['nom'])>."\r\n";
$entete .= 'mime-version: 1.0'."\r\n";
$entete .= 'content-type: text/html; charset=iso-8859-1'."\r\n";
$entete .= 'x-mailer: php/'.phpversion();.''."\r\n";
$entete .= 'x-sender: Site de Hauterive - '.str_replace("\r\n", null, $_POST['nom']).' <'.str_replace("\r\n", null, $_POST['nom'])>."\r\n";
$entete .= 'x-auth-smtp-user: localhost'."\r\n";

++

Commentaire de le rouge le 06/07/2007 13:34:35

Oups, si un admin/modérateur pouvait supprimer deux des 3 derniers commentaires identiques, merci...

(ce message aussi d'ailleurs...)

Commentaire de le rouge le 19/07/2007 14:22:02

Alors? C'est mieux?

S'il vous plaît, c'est tellement important...

Merci, ++

Commentaire de kankrelune le 24/07/2007 16:14:45

Désolé de ne pas avoir répondu avant mais j'avais zappé... .. .

Donc pour répondre à ton dernier poste... non pas vraiment... l'idée n'est pas d'enlever les caractères interdit, car ça risque de mettre le bordel dans tes header plus qu'autre chose, mais plutôt de détecter leur présence et si tu en trouve un tu affiche une erreur genre "caractère(s) interdit détecté(s)"... .. .

if(strpos( $maVar, "\n") !== false || strpos( $maVar, "\r") !== false)
    // erreur
else
{
    // traitement
}

@ tchaOo°

Commentaire de le rouge le 01/08/2007 14:14:05

Yop, merci pour ta réponse, donc il me suffit de modifier ma fonction de verification de chaîne comme suit :

// VERIFICATION DES CHAINES DE CARACTERES

function verifier_chaines($chaine)
{
$mauvaises_chaines = array('content-type:', 'mime-version:', 'content-transfer-encoding:', 'bcc:', 'cc:', '\n', '\r');

foreach($mauvaises_chaines as $caracteres_inautorises)
{
if(strpos($chaine, $caracteres_inautorises) !== false)
{
return false;
}
}
return true;
}

++

Commentaire de kankrelune le 01/08/2007 14:22:32

Euh non pas forcément... pas besoin de vérifier la présence de header puisque s'il n'y a pas retour à la ligne ces derniers ne serviront à rien... .. .

function verifier_chaines($str)
{
    return (strpos($str, "\n") === false &&
            strpos($str, "\r") === false);
}

Par contre cette vérification ne doit pas être faite sur le corps du mail qui lui peut contenir des retour à la ligne... .. .

@ tchaOo°

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

envoi multiple de mail [ par GADSN ] bonjourj'ai une petite question : je suis entrtain d'envoyer des mails periodiquement pour les adherants de mon site ; le probleme c'est que quelques Vérifier le présente d'une adresse email spécifique dans la boîte de messagerie [ par bonheur123 ] Bonjour,.Pouvez vous m'aider à avoir un script en PHP qui vérifie la présence d'une adresse email spécifique dans une boite de messagerie donnée ?.En formulaire/email sans client messagerie [ par totti3201 ] Bonjour à tous, je suis nouveau dans la programmation PHP et sur cet excellent site. J'ai une question dont je recherche en vain la réponse depuis p Flux rss sécurisé [ par lefter ] Bonjour,je souhaiterai solicité votre savoir pour vous posez une petite question :     Est-il possible de forcer un flux RSS seulement en liaison par formulaire trop complexe pour moi ! sos [ par bg62 ] bonjour, je me suis lancé dans l'élaboration d'un formulaire (en php mais avec aussi du javascript) et je rame complètement, malgré toutes les astuces envoie email publicitaire [ par Zombiman ] bonjour,donc j'ai deux question à vous poser:1ereje dois crée  pour un petit théatre un email publicitaire, c'est à dire  de mettre une image dans l'e envoyer email en meme temps qu'un formulaire dans mysql [ par dannyl ] Bonjours j'ai un un page ou jai un formulaire (le formulaire envoie les information dans une base de donner mysql), j'aimerai que quand le formulaire Accès aux fichiers sécurisé en php [ par neodelphi ] Bonjour tout le monde, Je souhaitai récemment proteger l'accès a un fichier zip sur mon site perso pour le restreindre à seulement quelques personnes envoi d-email [ par abdouinfomiage ] slt les ami j ai besoin d'un script qui me permet d'envoyer plusieurs e-mails a la foisj ai deux pages:-choix des e-mails                        -envo contact via formailre mail (ne passe pas) [ par speedylol ] bonjour j'ai un petit soucis avec mon formailare de contact pat mail , il ne passe pas je reviens toujours a la case réessayez seriez vous m'aider svp


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,747 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales