Formulaire de contact php5, poo, verification + envoi du mail

Soyez le premier à donner votre avis sur cette source.

Vue 24 099 fois - Téléchargée 3 606 fois

Description

J'ai réécri une de mes sources php4 :
http://www.phpcs.com/codes/FORMULAIRE-PHP-VERIFICATION-ENVOI-MAIL_47640.aspx

Source / Exemple :


<?php
/**************** CREE PAR MOUNIR R'QUIBA (MOON) (mounir.rquiba@gmail.com) ******************

  • 11/04/2010 !! COPYRIGHT !!
  • A utiliser sans moderation :D
  • CLASS ContactFormulaire PHP 5 POO , VERIFICATION , ENVOI DU MAIL
  • /
class ContactFormulaireRquiba{ /*
  • la proprité $nom défini le nom ou la raison social du contact
  • /
public $nom; /*
  • la proprité $mail défini l'adresse email du contact
  • /
public $mail; /*
  • la proprité $tel défini le numéro de telephone du contact
  • /
public $tel; /*
  • la proprité $sujet défini le sujet du message
  • /
public $sujet; /*
  • la proprité $message défini le message du contact
  • /
public $message; /*
  • la proprité $webmaster défini l'adresse email ou le message sera envoyé
  • /
public $webmaster; /*
  • la proprité $sendCheck est un valeur boolean qui valide l'envoi du mail
  • /
public $sendCheck = null; /*
  • la methode envoi_mail() envoi le mail
  • /
public function envoi_mail(){ $contenu_message = "Nom : ".$this->nom."\nMail : ".$this->mail."\nSujet : ".$this->sujet."\nTelephone : ".$this->tel."\nMessage : ".$this->message; $entete = "From: ".$this->nom." <".$this->mail."> \nContent-Type: text/html; charset=iso-8859-1"; mail($this->webmaster,$this->sujet,$contenu_message,$entete); } /*
  • la methode verif_null() verifie si la valeur de l'input et null
  • /
public function verif_null($var) { return (!empty($var))?$var:null; } /*
  • la methode verif_mail() verifie si la valeur de l'adresse email est correct.
  • /
public function verif_mail($var) { return (preg_match('#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,5}$#',$var))?$var:null; } /*
  • la methode verif_tel() verifie si la valeur du telephone est correct.
  • /
public function verif_tel($var) { return (preg_match('#^[0-9]{9,18}$#',$var))?$var:null; } /*
  • la methode inputTrue() permet de mettre en rouge les valeurs saisie incorrect.
  • pour un $type = 1 => input simple
  • pour un $type = 2 => input mail
  • pour un $type = 3 => input tel
  • /
public function inputTrue($input,$type = '1'){ $style_blanc = ' style = "font-family: verdana;border: solid #000000 1px;font-size: 8pt;color: #000000;background-color: #ffffff" '; $style_rouge = ' style = "font-family: verdana;border: solid #000000 1px;font-size: 8pt;color: #000000;background-color: #ff0000" '; $test = null; if(isset($_POST['nom'])){ switch($type){ case '1': $test = $this->verif_null($input); break; case '2': $test = $this->verif_mail($input); break; case '3': $test = $this->verif_tel($input); break; } if(empty($test)){ echo $style_rouge; }else{ echo $style_blanc; } } } /*
  • la methode loadForm() permet le chargement des données du formulaire dans chaque propriété de l'objet.
  • $data => tableau du formulaire de contact $_POST
  • /
public function loadForm($data){ extract($data); $this->nom = trim(htmlentities($nom, ENT_QUOTES)); $this->mail = $this->verif_mail($mail); $this->tel = $this->verif_tel($tel); $this->sujet = trim(htmlentities($sujet, ENT_QUOTES)); $this->message = trim(htmlentities($message, ENT_QUOTES)); $test = $this->testForm(); if(!empty($test)){ $this->envoi_mail(); $this->printForm(); $this->sendCheck = 1; }else{ echo '<div style="padding:5px;border:solid 2px #FF0000;background-color:#FEDFDF;width:600px;color:#ff0000;" >'; echo 'Veuillez correctement remplir les champs en rouge.'; echo '</div>'; } } /*
  • la methode printForm() Affiche le résultat final du mail envoyé.
  • /
public function printForm(){ echo '<div style="padding:2px;margin:2px;" >'; echo '<h2>Votre message a bien été envoyé</h2>'; echo '<a href="./">Envoyer un nouveau message</a><br />'; echo '<a href="./">Retour á la page d\'accueil</a><br />'; echo '</div>'; echo '<div style="padding:2px;border:solid 2px #000000;background-color:#000001;width:600px;color:#ffffff;" >'; echo 'Contenu de votre message envoyé '; echo '</div>'; echo '<div style="padding:2px;border:solid 2px #000000;background-color:#CDE9E5;width:600px;" >'; echo '<ul><li><b>Votre nom / Raison Social : </b>'.$this->nom.'</li>'; echo '<li><b>Votre mail : </b>'.$this->mail.'</li>'; echo '<li><b>Telephone : </b>'.$this->tel.'</li>'; echo '<li><b>Sujet : </b>'.$this->sujet.'</li>'; echo '<li><b>Votre message : </b>'.$this->message.'</li></ul>'; echo '</div>'; } /*
  • la methode testForm() renvoi 1 si les toutes les données du fomulaire sont corrécts sinon NULL.
  • /
public function testForm(){ if($this->verif_null($this->nom) and $this->verif_null($this->mail) and $this->verif_null($this->tel) and $this->verif_null($this->sujet) and $this->verif_null($this->message)){ if($this->verif_mail($this->mail) and $this->verif_tel($this->tel)){ return 1; } return NULL; } return NULL; } } ?> <?php /**************** CREE PAR MOUNIR R'QUIBA (MOON) (mounir.rquiba@gmail.com) ******************
  • 11/04/2010 !! COPYRIGHT !!
  • A utiliser sans moderation :D
  • index.php, PHP5 POO , VERIFICATION , ENVOI DU MAIL
  • /
include 'ContactFormulaireRquiba.php'; /*
  • Création de l'objet concact.
  • /
$contact = new ContactFormulaireRquiba(); /*
  • Chargement de la propiété webmaster qui est le destinataire du mail.
  • /
$contact->webmaster = 'mounir@rquiba.com'; // Veuillez indiquez votre adresse email /*
  • Verification d'une action sur le formuilaire de contact.
  • /
if(isset($_POST['nom'])){ $contact->loadForm($_POST); } /*
  • $send = null => Formulaire incomplet
  • $send = 1 => Formulaire complet
  • /
$send = $contact->sendCheck; /*
  • Si $send est null on affiche le formulaire de contact
  • /
if(empty($send)){ ?> <?php /* FORMULAIRE DEBUT */ ?> <div style="width:600px;padding:5px;"> <form method="post"> <table width="100%" height="317" border="0"> <tr> <td width="30%" align="right" valign="middle"> &nbsp;&nbsp; </td> <td width="70%"> <b>Soit</b> <a href="mailto:<?php echo $contact->webmaster; ?>">cliquer ici pour envoyer un mail directement</a><br /> <b>Ou</b> veuillez remplir le formulaire de contact :<br /> </td> </tr> <tr> <td width="30%" align="right" valign="middle"> <font size="3" face="Verdana, Arial, Helvetica, sans-serif">Votre nom / Raison social <b>*</b> :</font> </td> <td width="60%"> <input type="text" name="nom" size="50" <?php $contact->inputTrue($contact->nom); ?> value="<?php echo $contact->nom; ?>" /> </td> </tr> <tr> <td align="right" valign="middle"> <font size="3" face="Verdana, Arial, Helvetica, sans-serif">Votre mail <b>*</b> :</font></td> <td> <input type="text" name="mail" size="50" <?php $contact->inputTrue($contact->mail,'2'); ?> value="<?php echo $contact->mail; ?>" /> </td> </tr> <tr> <td align="right" valign="middle"> <font size="3" face="Verdana, Arial, Helvetica, sans-serif">Tel <b>*</b> :</font></td> <td> <input type="text" name="tel" size="20" <?php $contact->inputTrue($contact->tel,'3'); ?> value="<?php echo $contact->tel; ?>" /> </td> </tr> <td align="right" valign="middle"> <font size="3" face="Verdana, Arial, Helvetica, sans-serif">Sujet <b>*</b> :</font> </td> <td> <input type="text" name="sujet" size="50" <?php $contact->inputTrue($contact->sujet); ?> value="<?php echo $contact->sujet; ?>" /> </td> </tr> <tr> <td height="181" align="right" valign="top"> <font size="3" face="Verdana, Arial, Helvetica, sans-serif">Message <b>*</b> : </font> </td> <td valign="top"> <textarea name="message" cols="47" <?php $contact->inputTrue($contact->message); ?> rows="10" ><?php echo $contact->message; ?></textarea> </td> </tr> <tr> <td> &nbsp; </td> <td valign="TOP"> (<b>*</b>) Champ obligatoire. </td> </tr> <tr> <td> &nbsp; </td> <td valign="TOP"> <input type="submit" style = "font-family: verdana;padding: 5px 45px 5px 45px;border: solid #000000 2px;font-size: 8pt;color: #ffffff;background-color: #32269F" name="envoyer" value="Envoyer" /> </td> </tr> </table> </form> </div> <?php } ?> <?php /* FOMULAIRE FIN*/ ?>

Codes Sources

A voir également

Ajouter un commentaire Commentaires
uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011
11 avril 2010 à 23:07
Salut,
J'ai jamais trop compris l'utilisation des objets dans un tel cas...

Il manque "<?php" à la dernière ligne.

Tu peux optimiser, même si ça nuit à la lisibilité du code.
Par exemple :
public function verif_tel($var)
{
$code_syntaxe='#^[0-9]{9,18}$#';
if(preg_match($code_syntaxe,$var)){
return $var;
}
return null;
}

devient

public function verif_tel($var)
{
return (preg_match('#^[0-9]{9,18}$#',$var))?$var:null;
}

if($var!="" and !empty($var)){
Pour moi, vérifier empty() suffit, c'est redondant sinon.

Même si on est sur un site de php :
Une balise input est autofermante ()
Et je te conseille de mettre l'unité de mesure dans tes attributs (height="317px" au lieu de height="317"), ça m'a déjà joué de vilains tours (sous Chrome, je crois, je ne sais plus).
Le css est bien mieux que des et :)

Bonne continuation.
mtrix000 Messages postés 31 Date d'inscription mardi 26 août 2008 Statut Membre Dernière intervention 1 novembre 2012
12 avril 2010 à 16:17
Merci pour tes conseil UAIP,
Et je suis d'accord avec toi !!!

Bonne continuation ;)
nwkig Messages postés 3 Date d'inscription jeudi 20 novembre 2008 Statut Membre Dernière intervention 31 mai 2010
15 avril 2010 à 15:54
Salut, bonne initiative Peut être serait-il judicieux d'utiliser les API filter avec filter validate et sanitize filter_has_var ect .... Ceci dans le but de vraiment faire un script en php5.

Sinon comme le dit uaip l'objet dans ce cas c'est peut être un peu lourd pour un simple envoie de mail.

bonne continuation
doguo81 Messages postés 1 Date d'inscription vendredi 16 avril 2010 Statut Membre Dernière intervention 23 avril 2010
23 avril 2010 à 13:41
bon commentaire, ai quand même quelque erreur dessus .
Pourrait -on avoir la version sans erreur?
merci d avance
Pour habiller mon formulaire puis modifier le CSS ??
Avec ce style de formulaire pas besoin de mettre de fichier traitement donc je vois.??
J'aurais besoin de le connecter à une base de donnée cela est il faisable et comment surtout ???
Un autre dernier point, j'ai également réaliser un calendrier dont je pourrais vous montrez le code si j' ai le droit
par contre dessus je n'arrive pas à ce que le calendrier ce mette à jour..Doit- on le connecter sur une base de donnée et dans ce cas comment faire ???
merci beaucoup
merci d 'avance .
Peux t on passé des liens ou j ai mes exemple calendrier ainsi que formulaire merci
salut j’étais opposé par cet erreur

Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\wamp\www\pfe\formRquiba\ContactFormulaire.php on line 81

jespere ke vous m'aider o plu tot possible

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.