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">
</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>
</td>
<td valign="TOP">
(<b>*</b>) Champ obligatoire.
</td>
</tr>
<tr>
<td>
</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*/ ?>
11 avril 2010 à 23:07
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.
12 avril 2010 à 16:17
Et je suis d'accord avec toi !!!
Bonne continuation ;)
15 avril 2010 à 15:54
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
23 avril 2010 à 13:41
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
25 avril 2013 à 17:50
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.