IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Optimisation d'un formulaire contact


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 37
    Par défaut Optimisation d'un formulaire contact
    Bonjour,
    Je recherche de l'aide afin d'optimiser mon formulaire de contact.
    Actuellement voici la configuration de ma base de données :

    Table "formulaire" :
    id_form   nom   objet   texte   mail   mail_dest
    
    Table "destinataire" :
    Id_dest   Nom   mail_desti
    Voici le code de mon formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
     
    <?php
    // Initalisation
    	$validContact 	= 0;
    	$MsgErrContact 	= '';
    	$defaut_nom 	= 'Nom';
    	$defaut_mail 	= 'Votre adresse mail';
    	$defaut_objet 	= 'Objet';
    	$defaut_texte 	= 'Texte';
    	$nom 		= $defaut_nom;
    	$mail 		= $defaut_mail;
    	$objet 		= $defaut_objet;
    	$texte 		= $defaut_texte;
     
    // si le formulaire est post�
    if (isset($_POST['B1']))
    {
    	// ----------------------------------------------------
    	// R�cup�ration des valeurs des champs du formulaire
    	// ----------------------------------------------------
    	$nom 		= (isset($_POST['nom']) && trim($_POST['nom'])!=$defaut_nom)? 		trim(stripslashes($_POST['nom'])) : $defaut_nom;
    	$mail 		= (isset($_POST['mail']) && trim($_POST['mail'])!=$defaut_mail)? 	trim(stripslashes($_POST['mail'])) : $defaut_mail;
    	$objet 		= (isset($_POST['objet']) && trim($_POST['nom'])!=$defaut_objet)? 	trim(stripslashes($_POST['objet'])) : $defaut_objet;
    	$texte 		= (isset($_POST['texte']) && trim($_POST['nom'])!=$defaut_texte)? 	strip_tags(trim(stripslashes($_POST['texte']))) : $defaut_texte;	// textarea + protection anti-xss
    	// ----------------------------------------------------
    	// Gestion des erreurs
    	// ----------------------------------------------------
    	// champs obligatoires
    	$champ_obligatoire = array();
    	// Message
    	if ($nom=='' || $nom==$defaut_nom) {	$validContact = 2;	$champ_obligatoire[] = 'Votre Nom'; }
    	if ($mail=='' || $mail==$defaut_mail) {	$validContact = 2;	$champ_obligatoire[] = 'Votre adresse mail'; }
    	if($validContact==2 && count($champ_obligatoire)>0) {
    		$MsgErrContact 	.= 'Remplissez les champs obligatoires : '.implode(', ',$champ_obligatoire).'<br />';
    	}
    	// -------------
    	// regex e-mail
    	$regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i'; 
    	// On v�rifie que le format de l'e-mail est correct
    	if ($mail!='' && $mail!='Votre adresse mail' && !preg_match($regex_mail, $mail)) {
    		$MsgErrContact 	.= 'Adresse mail invalide (doit �tre de la forme : <a href="mailto:xxxx@xx.xx">xxxx@xx.xx</a>)'.'<br />';
    		$validContact 	= 2;
    	}
    	// -------------
    	// essai de connexion � la base de donnees
    	if(!mysql_connect('mysql51-26.pro','sniazllbbd2','XXXXXXX')){
    		$MsgErrContact 	.= 'Connection � la base de donnees Impossible'.'<br />';
    		$validContact 	= 2;
    	}
    	// -------------
    	if ($validContact!=2) {
    		$validContact = 1;
    	}
    	// ----------------------------------------------------
    	// PAS d'ERREUR : TRAITEMENT
    	// ----------------------------------------------------
    	if($validContact == 1) {
     
    		// -------------
    		// 1/ PROTECTION contre injection SQL AVANT insertion en bdd
    		$bd_nom 	= mysql_real_escape_string($nom);
    		$bd_mail 	= mysql_real_escape_string($mail);
    		$bd_objet 	= mysql_real_escape_string($objet);
    		$bd_texte 	= mysql_real_escape_string($texte);
    		// -------------
    		// 2/ Enregistrement en base de donn�es
    		mysql_select_db('sniazllbbd2');
    		$requete = "INSERT INTO formulaire SET nom='$bd_nom',objet='$bd_objet',texte='$bd_texte', mail='$bd_mail'" ;
    		$resultat = mysql_query($requete);
    		// -------------
    		// 3/ ENVOI d'un email a l'administrateur
    		$message	= date("d/m/Y H:m:s\n")."\n".
    					" Nouveau contact :"."\n";
    					" Nom :".$nom."\n".
    					" Adresse mail :".$mail."\n".
    					" Objet :".$objet."\n".
    					" Texte :".$texte;
    		$entetes	= "From: $mail\nReply-to: $mail\n".
    					"MIME-Version: 1.0\r\n".
    					"Content-type: text/plain; charset=utf-8\r\n"; // (format TEXTE)
    		$sujet		= "Contact site SNIA de la part de ".$nom;
    		$webmaster	= 'raphael.1@gmail.com';
    		mail($webmaster,$sujet,$message,$entetes);
    		// -------------
    	} // fin traitement
    } // fin si le formulaire est post�
    ?>
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr" dir="ltr">
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    	<title>Formulaire contact</title>
    	<style type="text/css">
    	label { float:left; width:150px; text-align:right; margin-right:5px; }
    	</style>
    </head>
    <body>
    <?php // Messages
    if($validContact==1) { // message OK ?>
    	<p>Votre message a bien �t� envoy�</p>
    <?php
    } elseif($validContact==2) { // message ERREUR ?>
    	<p><?php echo $MsgErrContact; ?></p>
    <?php } ?>
     
    <?php // Formulaire
    if($validContact!=1) { ?>
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    	<p>
    		<label for="idnom">Nom : </label>
    		<input id="idnom" name="nom" type="text" size="30" value="<?php echo $nom; ?>" onfocus="if(this.value=='<?php echo $defaut_nom; ?>'){ this.value=''; }" onblur="if(this.value==''){ this.value='<?php echo $defaut_nom; ?>'; }">
    	</p>
    	<p>
    		<label for="idmail">Votre adresse mail : </label>
    		<input id="idmail" name="mail" type="text" size="30" value="<?php echo $mail; ?>" onfocus="if(this.value=='<?php echo $defaut_mail; ?>'){ this.value=''; }" onblur="if(this.value==''){ this.value='<?php echo $defaut_mail; ?>'; }">
    	</p>
    	<p>
    		<label for="idobjet">Objet : </label>
    		<input id="idobjet" name="objet" type="text" size="50" value="<?php echo $objet; ?>" onfocus="if(this.value=='<?php echo $defaut_objet; ?>'){ this.value=''; }" onblur="if(this.value==''){ this.value='<?php echo $defaut_objet; ?>'; }">
    	</p>
    	<p>
    		<label for="idtexte">Texte : </label>
    		<textarea id="idtexte" name="texte" cols="40" rows="3" onfocus="if(this.value=='<?php echo $defaut_texte; ?>'){ this.value=''; }" onblur="if(this.value==''){ this.value='<?php echo $defaut_texte; ?>'; }"><?php echo $texte; ?></textarea>
    	</p>
    	<p>
    		<label>&nbsp;</label>
    		<input type="submit" value="Envoyer" name="B1">
    	</p>
    </form>
    <p>
      <?php } // fin formulaire ?>
     
    </p>
    <p>&nbsp;</p>
    </body>
    </html>
    J'ai créé un formulaire mais je n'arrive pas a y ajouter une liste déroulante permettant de sélectionner le destinataire.
    Je voudrais y ajouter une liste déroulante (la liste déroulante afficherait que le nom du destinataire et non sont adresse afin de diffuser celle-ci. Les infos sont issu de la table "destinataire") dans laquelle l'utilisateur sélectionnerez le nom du destinataire et quand il cliquerez sur le bouton "envoi" le serveur enverrait le mail issu du formulaire à l'adresse du destinataire sélectionné et une copie des informations saisie serait enregistrée dans la table "formulaire".

    Quelqu'un pourrait il m'apporter son aide, un conseil, une remarque, une idée, … SVP Merci

    Bonne fin de journée

    Raphael

  2. #2
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    salut ; avant tout change de balise pou que ton code soit lisible enlève celle de citation est utilise la balise #
    juste une proposition essaye de passé a PDO ou mysqli
    http://php.net/manual/fr/class.pdo.php
    http://php.net/manual/fr/class.mysqli.php
    en attendant que la code soit visible , ajoute un autre contrôle coté php
    en ce qui concerne la liste des destinataires une balise select et une requête feront l'affaire.

    Bonne fin de journée....

Discussions similaires

  1. [Joomla!] formulaire contact : pas d'envoi
    Par kamilane dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 10/12/2007, 16h52
  2. Mon formulaire contact me parvient vide
    Par mercibien dans le forum Langage
    Réponses: 15
    Dernier message: 13/05/2007, 17h59
  3. [PHP-JS] probleme avec mon formulaire contact
    Par gtraxx dans le forum Langage
    Réponses: 27
    Dernier message: 03/10/2006, 00h41
  4. pb de formulaire contact asp
    Par idea2concept dans le forum ASP
    Réponses: 1
    Dernier message: 22/08/2006, 21h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo