Arto_8000
Messages postés1044Date d'inscriptionlundi 7 mars 2005StatutMembreDernière intervention13 juillet 2010
-
10 juin 2009 à 03:54
cs_aKheNathOn
Messages postés575Date d'inscriptiondimanche 23 décembre 2001StatutMembreDernière intervention23 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.
cs_aKheNathOn
Messages postés575Date d'inscriptiondimanche 23 décembre 2001StatutMembreDernière intervention23 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és23Date d'inscriptionlundi 31 mars 2008StatutMembreDerniè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és48Date d'inscriptionjeudi 18 octobre 2007StatutMembreDerniè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és23Date d'inscriptionlundi 31 mars 2008StatutMembreDerniè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("
// 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és48Date d'inscriptionjeudi 18 octobre 2007StatutMembreDerniè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):
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és2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 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és1044Date d'inscriptionlundi 7 mars 2005StatutMembreDernière intervention13 juillet 20107 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.
16 juin 2009 à 23:56
ça fait du bien de se détendre un peu. Cette source cumule tout :) j'adore
11 juin 2009 à 20:09
Après c'est un choix !
11 juin 2009 à 19:03
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
11 juin 2009 à 18:41
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
';}
?>
11 juin 2009 à 15:20
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
11 juin 2009 à 09:11
if (isset($_POST['ton_bouton_envoyer'])) {
envoi du mail
}
question de sécurité :)
10 juin 2009 à 16:07
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...
10 juin 2009 à 12:33
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...
10 juin 2009 à 03:54
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.