Script de formmail qui permet de recevoir un feedback des visiteurs de votre site... Le visiteur peut choisir entre plusieurs detinataire!
Source / Exemple :
<?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!!
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.