FORMULAIRE CONTACT

Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 - 10 juin 2009 à 03:54
cs_aKheNathOn Messages postés 575 Date d'inscription dimanche 23 décembre 2001 Statut Membre Dernière intervention 23 octobre 2012 - 16 juin 2009 à 23:56
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/50151-formulaire-contact

cs_aKheNathOn Messages postés 575 Date d'inscription dimanche 23 décembre 2001 Statut Membre Dernière intervention 23 octobre 2012
16 juin 2009 à 23:56
mais c'est un troll ?!? non ? lol

ça fait du bien de se détendre un peu. Cette source cumule tout :) j'adore
wanou95b Messages postés 23 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 5 juin 2009
11 juin 2009 à 20:09
Tu peux remonter sans problème l'affichage des erreurs au niveau des cellules de saisie ! Tu enleves la dernieres section et tu affiches les erreurs dans la section "// Affichage du formulaire avec gestion des erreurs et des values"
Après c'est un choix !
astro53 Messages postés 48 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 5 août 2009
11 juin 2009 à 19:03
Salut wanou95b,
Je n ai pas voulu faire autre chose que reprendre son code. D ailleur je me suis rendu compte que mon code possede une grosse lors de la confirmation positive il faudrait recuperer les valeurs des champs email, pseudo, et message. champs que j aurais ecris en input hidden lors de la verif...
Bien entendu c est loin d'etre la seul amelioration possible...Ton code est plutot bien je ne l ai pas lu en entier ni tester mais ce qui est dommage c est que toutes tes erreurs s'affiche en dessous du formulaire.

Ne serait t il pas plus simple lors de la gestion des valeurs et des values de faire un seul if else en additionnant tout tes ifs?

A bientot
Astro53
wanou95b Messages postés 23 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 5 juin 2009
11 juin 2009 à 18:41
Bon, c'est que ton code, hors problème CSS, largement améliorable....

Plutôt que de rentrer dans une énorme discussion, je te propose ce script, très simple, mais qui traite tous les cas d'erreurs en un seul script
- Av


<?php

// Récupération de l'adresse email de l'admin
require("config/param.php");
$enrg= 0;
$OK=0;
if (isset($_POST["GO"])) {
$OK=1;
$NOMMAIL=$_POST["nommail"];
$PRENOMMAIL=$_POST["prenommail"];
$EMAIL=$_POST["email"];
$OBJET=$_POST["objet"];
$SUJET=$_POST["sujet"];
$DATEMAIL=date("Y-n-j");
$HEUREMAIL=date("H:i:s");

$err1=0;
$err2=0;
$err3=0;
$err4=0;
$err5=0;

$errtot=0;

if (empty($NOMMAIL)) {$err1++;}
if (empty($PRENOMMAIL)) {$err2++;}
if (empty($EMAIL)) {$err3++;}
if ($err3==0) {
if (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-._]?[0-9a-z])*\.[a-z]{2,3}$",$EMAIL)) {
$err4++;
}
}
if (empty($OBJET)) {$err5++;}
if (empty($SUJET)) {$err6++;}
// Calcul du nombre d'erreurs
$errtot=$err1+$err2+$err3+$err4+$err5+$err6;
// Si pas d'erreurs envoie du mail
if($errtot==0)
{
mail($admin_mail,$OBJET,$SUJET);
$enrg=1;
}
}

if ($OK==0) {
// Affichage du formulaire sans les value
echo("

CONTACTEZ L'ADMINISTRATEUR

<hr>");
echo '<form method ="post" action= "index.php?page=contact">';
echo '';
echo '----
Nom, , ';
echo '----
Prénom, , ';
echo '----
Adresse Email, , ';
echo '----
Objet du mail, , ';
echo '----
Sujet, <textarea name="sujet" cols="50" rows="10" id="sujet"></textarea>, ';
echo '----
, , ';
echo '
';
echo '</form><hr>';
}

if (($OK==1) AND ($errtot==0))
{
// Mail envoyé
echo("

VOTRE MAIL A ETE ENVOYE

");
echo '

[index.php?page =default_page Accueil]

';
}

if (($OK= =1) AND ($errtot>0)){
// Affichage du formulaire avec gestion des erreurs et des values
echo("

CONTACTEZ L'ADMINISTRATEUR

<hr>");
echo '<form method ="post" action="index.php?page=contact">';
echo '';
if ($err1 == 0) {
echo '----
Nom, , ';
}else{
echo '----
Nom, , ';
}
if ($err2 == 0) {
echo '----
Prénom, , ';
}else{
echo '----
Prénom, , ';
}
if (($err3 > 0)OR($err4 > 0)) {
echo '----
Adresse Email, , ';
}else{
echo '----
Adresse Email, , ';
}
if ($err5 == 0) {
echo '----
Objet du mail, , ';
}else{
echo '----
Objet du mail, , ';
}
if ($err6 == 0) {
echo '----
Sujet, <textarea name="sujet" cols="50" rows="10" id="sujet" value='.$SUJET.'></textarea>, ';
}else{
echo '----
Sujet, <textarea name="sujet" cols="50" rows="10" id="sujet"></textarea>, ';
}
echo '----
, , ';
echo '
';
echo '</form><hr>';
}


// Gestion de l'affichage des erreurs
if (($OK=1)&($err1==1)){echo ("La saisie du nom est obligatoire

");}
if (($OK=1)&($err2==1)){echo ("La saisie du prénom est obligatoire

");}
if (($OK=1)&($err3==1)){echo ("La saisie de l'adresse email est obligatoire

");}
if (($OK=1)&($err4==1)){echo ("

La saisie de l'adresse email est incorrecte

");}
if (($OK=1)&($err5==1)){echo ("Précisez l'objet du mail SVP

");}
if (($OK=1)&($err6==1)){echo ("Le mail est vide !!

");}
if (($OK=1)&($errtot >0)) { echo '<hr>Corriger et valider de nouveau

';}
?>
astro53 Messages postés 48 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 5 août 2009
11 juin 2009 à 15:20
Salut voici tes trois pages en une avec separation du html et du css et verification du formulaire.
Pense a verifier l'orthographe car meme si il arrive a tout le monde de faire des fautes ici tu en fais des enormes.

page contact verifMessage et sendMessage (3 en 1):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns= "http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>FORMULAIRE DE CONTACT</title>
<link rel="stylesheet" type="text/css" href="css/main.css" />
<meta http-equiv="Content-Language" content="fr" />
</head>

<?php

if(isset($_POST["confirmer"]) && $_POST["confirmer"] == "oui"){
$TO = /*"VOTRE ADRESSE EMAIL"*/ "astro532@hotmail.com"; // Adresse email ou vous allez recevoir le/les message(s).
$h = "From: ADRESSE DE VOTRE SITE"; // Entrer l'adresse de votre site ou l'adresse email de votre site.
$message = ""; // Laisser vide.
$subject = "Nouveau Message"; //Sujet du mail que vous allez recevoir.
foreach($HTTP_POST_VARS as $key => $value){
$message .= $key.": ".$value."\n"; // Ne pas touchez !
}
mail($TO, $subject, $message, $h); // Ne pas touchez !
?>
FORMULAIRE DE CONTACT

Votre message vient d'être envoyé !

Pour ecrire un autre mail [contact.php cliquez ici!]


<?php } else if((isset($_POST["Pseudo"]) && $_POST["Pseudo"] ! = null) && (isset($_POST["Email"]) && preg_match('#^[a-zA-Z]+[a-zA-Z0-9._-]*@[a-zA-Z]{2,}[a-zA-Z0-9._-]*\.([a-zA-Z]{2}\.[a-zA-Z]{2}|[a-zA-Z]{3,})$#i',$_POST["Email"]) && $_POST["Email"] != null) && (isset($_POST["Message"]) && $_POST["Message"] != null)){
$Pseudo = htmlspecialchars($_POST["Pseudo"]); //On récupére le champs : PSEUDO.
$Email = htmlspecialchars(strtolower($_POST["Email"])); //On récupére le champs : EMAIL.
$Message = htmlspecialchars(nl2br($_POST["Message"])); //On récupére le champs : MESSAGE.
?>

FORMULAIRE DE CONTACT

Voici ce que vous avez entré:

Email: <?php echo $Email; ?>

Pseudo: <?php echo $Pseudo; ?>

Message: <?php echo $Message; ?>

<form class="center" method="POST" name="Send">
Oui Non
</form>

<?php } else{?>

FORMULAIRE DE CONTACT

<form method="POST" name="Contact">
Entrez votre adresse e-mail:,
,
<?php if(isset($_POST["Email"]) && $_POST["Email"] != null) echo "Verifiez votre Email."; ?><?php if(isset($_POST["Mail"]) && $_POST["Mail"] != null) echo "Verifiez votre Mail."; ?>,

----

Entrez votre pseudonyme:,
,
<?php if(isset($_POST["Pseudo"]) && $_POST["Pseudo"] != null) echo "Verifiez votre Pseudo."; ?>

Entrez maintenant votre message :

<textarea rows="12" name="Message" cols="86">Bonjour,</textarea>


<?php if(isset($_POST["Message"]) && $_POST["Message"] != null) echo "Verifiez votre Message."; ?>



</form>

<?php } ?>

</html>

page main.css dans le dossier "css"

/*@charset utf-8*/

h3{
text-align:center;
font-family: Franklin Gothic Book,verdana,arial,sans-serif;
text-transform:uppercase;
text-decoration:underline;
}

p{
text-align:center;
font-family: Franklin Gothic Book,verdana,arial,sans-serif;
}

input,textarea{
font-family: Franklin Gothic Book,verdana,arial,sans-serif;
border: 2px rigid #000000;
}

.bold{
font-weight:bold;
}

.verif_textarea{
text-align:left;
line-height:100%;
}

a{
color:#000000;
}

table{
margin-left:37%;
width:550px;
border:none;
}

.center{
width:100%;
text-align:center;
}

Voila en esperant que cela pourra t'aider ou en aider d'autre.
A bientot
Astro
VestaX Messages postés 374 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 24 avril 2013
11 juin 2009 à 09:11
J'aurrais mis un

if (isset($_POST['ton_bouton_envoyer'])) {

envoi du mail

}

question de sécurité :)
cs_BlackDragon Messages postés 16 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 11 août 2009
10 juin 2009 à 16:07
aucune classe, aucune fonction, aucune vérification, aucune séparation du code, aucun intéret....

j'aimerai bien te dire ce qui ne va pas mais en fait, le seul conseil que j'ai à te donner, c de tout recommencer et revoir tes bases de php...
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
10 juin 2009 à 12:33
Salut,

En quoi ça fait plus pro d'utiliser du HTML qui n'est conforme à aucun standard (ni XHTML, ni HTML4.1, ni 4.0, ni 3.2, ni même HTML 2) ?
Pis l'encodage des caractères : windows-1252... En quoi c'est plus pro que de l'UTF-8 qui est universel ?
Pis on va pas s'attarder sur les erreurs soulignées par Arto, mais je comprends pas qu'en 2009 on continue de coder comme je codais avec PHP3 il y a 10 ans... Mince, aucun tuto n'a évolué sur le net ? Est-ce que, vraiment, tous les documents existents indiquent clairement qu'il faut absolument mélanger le traitement et l'affichage, ne faire aucune vérification parce qu'on considère que tout est toujours ok ?

Je suis peut-être un vieux con, hein... N'empêche que je comprends pas... Ca fait deux fois aujourd'hui que je comprends pas...
Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
10 juin 2009 à 03:54
Le code est assez faible, il y a beaucoup de truc à corrigé pour avoir quelque chose qui fait un peu plus "pro" comme tu le dis.

Pour ceci :
while (list($key, $val) = each($HTTP_POST_VARS)) { // Ne pas touchez !
$message .= "$key : $val\n"; // Ne pas touchez !
}

Un foreach aurait fait la même chose en plus clair et plus optimiser.

foreach($HTTP_POST_VARS as $key=>$val) {
// ...
}

Il faut impérativement tester toutes les valeurs qui viennent du client. Tu ne fais même pas de vérification à savoir s'il existe.

if (isset($_POST["Message"])) {
$Message = $_POST["Message"];
} else {
// faire une message d'erreur quelconque
}

Tu devrais aussi mettre une vérification minimale que le email entré est au moins valide.

Côté HTML, on est rendu à l'ère du CSS, la balise "font" ainsi que tout le formatage fait directement dans le HTML est dépassé. On sépare les données de la façon donc ils sont affichés.

Aussi pourquoi est-ce que tu as mis un charset très peu utilisé pour tes pages ... windows-1252 ? Ce qui plus standard c'est UTF-8 ou iso-8859-1.
Rejoignez-nous