hood42
Messages postés2Date d'inscriptionjeudi 27 juillet 2006StatutMembreDernière intervention22 février 2007 22 févr. 2007 à 17:03
Faut que je me calme moi...
Désolé mais ça m'a un peu énervé de voir ça.
Bon sinon je me suis aperçu que je n'avais pas posté le bon formulaire (j'ai 2 versions), je met l'autre.
No stress HOOD42 !
La prochaine fois post sur le forum avant histoire d'améliorer tout ca et de post une source comme on les aime ^^
ImmortalPC
Messages postés954Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention11 novembre 20082 21 févr. 2007 à 18:57
Salut,
> Kankrelune
:$ un trou de mémoire mais merci pour le lien ;-)
J' ai lu la doc et je suis tombé sur un passage :
Pour explicitement convertir une valeur en booléen, utilisez les opérateurs de transtypage (bool) ou (boolean). Cependant, dans la plupart des cas, vous n'avez pas besoin d'utiliser ces opérateurs de transtypage, car une valeur sera automatiquement convertie si un opérateur, une fonction ou une structure de contrôle requièrent un argument de type booléen.
Donc dans le cas de cette source on peut usé de cette technique.
> Hood42
Calme toi !
On ne t 'insulte pas on te dit juste que ta source est trop "pauvre" et que tu as quelques progrès à faire.
Je t' ai envoyé ton formulaire remanié de la bonne façon pour te montrer comme écrire, pas pour t' insulter.
@+
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 21 févr. 2007 à 18:56
Hood42 merci de te calmer !
- 1 - ce n'est pas en polluant les sources de cs que l'on progresse... à la limite si tu voulais des avis pour progresser tu pouvais poster sur le forum en demandant les avis et critiques
- 2 - si tu relis les commentaires précédents tu verra qu'il y a de quoi progresser... critiques sur ton code... code exemple d'ImmortalPC et les amélioration que l'on peut y faire
- 3 - personne ne t'a engueulé... si recevoir des critique c'est se faire engueuler je vois mal comment tu compte progresser... tu t'attendait peut être à des applaudissements... franchement... ton code est pas mal pour un débutant cependant les remarques faites précédemment restent d'actualité...
A bon entendeur... .. !
@ tchaOo°
hood42
Messages postés2Date d'inscriptionjeudi 27 juillet 2006StatutMembreDernière intervention22 février 2007 21 févr. 2007 à 18:24
Allez vous faire f..... si j'ai mis ce formulaire c'est pour progresser alors c'est pas la peine de m'engueuler !
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 21 févr. 2007 à 16:53
ImmortalPC
Messages postés954Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention11 novembre 20082 21 févr. 2007 à 16:46
Re,
chaines, booléen c' est quoi la différance ?
@+
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 21 févr. 2007 à 16:42
On peut aussi faire :
if($_POST['email'] && $_POST['sujet'] && $_POST['message'])
Ca marche effectivement mais au niveau syntaxe ce n'est pas bon ces données étant des chaines et non pas des booléen... qui plus est si mon message est "0" ça ne passera pas... bon c'est con de poster juste un zéro mais sait on jamais... .. . ;o)
@ tchaOo°
ImmortalPC
Messages postés954Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention11 novembre 20082 21 févr. 2007 à 16:24
<form action="?"
le enctype est inutile mais tout comme pour le action c'est du détail... .. . ^_^
>> Pour "action" et "enctype", je trouve ma façon de faire plus précise.
-------------------
if(trim($_POST['email']) !== '' && trim($_POST['sujet']) !== '' && trim($_POST['message'] !== ''))
ou à la limite
if(!empty($_POST['email']) && !empty($_POST['sujet']) && !empty($_POST['message'])
>> Très juste l' ami ;-)
On peut aussi faire :
if($_POST['email'] && $_POST['sujet'] && $_POST['message'])
--------------------
if(preg_match(
plus souple et surtout plus rapide
>> Oups, désolé je savais pas. Merci pour l' info :D
--------------------------
alors là il y a peut être un hic... c'est à vérifier avec le preg_match mais on peut peut être faire une injection de header... si c'est le cas...
if(strpos($_POST['email'],"\n") !== false || strpos($_POST['email'],"\r") !== false)
// erreur
else
// ok
et si c'est pas le cas j'ais rien dis... aïe... non... aïe... pô taper... .. . ;o)
sinon
if(@mail($webmaster, $_POST['sujet'], $_POST['message'], 'From: '.$_POST['email']))
le @ evitera à php de lacher un warning si error_reporting n'est pas à 0 et s'il y a un problème lors de l'envoi... j'aurais tendance aussi à faire un htmlentities() sur le sujet et le message... .. .
>> - Pour l' injection dans le head c' est impossible (j' ai déjà essayé ^^) car il y a le (anciennement eregi) preg_match qui vérifit la chaine $_POST['email'] du début à la fin ;-)
- Pour le @ j' ai hésité à le mettre car c' est un code de débutant et les débutants en général ne config pas le php.ini
- Ensuite on doit bien faire un htmlentities sur le sujet, (oublis de ma part :S)
mais pas sur le message car le mail est par défaut est en mode txt.
----------------------------
" />
et
" />
Ca peut paraitre con mais si je poste un message contenant "pwet > plop" comme sujet ça risque de défigurer la page... .. .
>> Absolument on peut même faire bien plus :
" /><script>alert('une faille');</script><input type="text" value="
Il ne faut pas oublié de décodé les données en traitement
car s' il y a une erreur et que par exemple le sujet soit : il y a une érreur dans votre site
en encodé ça donne :
il y a une érreur dans votre site
puis
il y a une érreur dans votre site
ect...
@+
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 21 févr. 2007 à 15:36
Tout comme les post précédents... je rajouterais juste quelques corrections au code d'ImmortalPc...
le @ evitera à php de lacher un warning si error_reporting n'est pas à 0 et s'il y a un problème lors de l'envoi... j'aurais tendance aussi à faire un htmlentities() sur le sujet et le message... .. .
----------------------------
" />
et
" />
=>
" />
et
" />
Ca peut paraitre con mais si je poste un message contenant "pwet > plop" comme sujet ça risque de défigurer la page... .. .
@ tchaOo°
ImmortalPC
Messages postés954Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention11 novembre 20082 21 févr. 2007 à 13:35
Salut,
voilà un bon formulaire :
<!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" dir="ltr"><head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-1" />
<title>Formulaire de contact</title>
<style type="text/css" media="screen">
<!--
p {
margin: 0px;
padding: 0px;
}
// On vérifit si l' on a reçut des données
if(IsSet($_POST['email'],$_POST['sujet'],$_POST['message'])){
$_POST['message'] = html_entity_decode($_POST['message']);
// On vérifit que les données ne sont pas vide
if($_POST['email'] !== '' && $_POST['sujet'] !== '' && $_POST['message'] !== ''){
// On vérifit si l' adresse e-mail est valide
if(eregi('^[[:alpha:]]{1}[[:alnum:]]*((\.|_|-)[[:alnum:]]+)*@[[:alpha:]]{1}[[:alnum:]]*((\.|-)[[:alnum:]]+)*(\.[[:alpha:]]{2,})$', $_POST['email'])){
// On envoie le mail puis on vérifit s' il a été envoyé
if(mail($webmaster, $_POST['sujet'], $_POST['message'], 'From: '.$_POST['email'])){
echo 'Votre message a bien été envoyé.
Nous vous répondrons dans les plus pref délai.
',"\r\n";
}else{
echo 'L' e-mail n' a pas pu être envoyé.
Veuillez réessayer plus tard.
Merci.
',"\r\n";
}
}else{
echo 'Veuillez entrer une adresse e-mail valide.
Merci.
',"\r\n";
}
}else{
echo 'Veuillez remplir tout les champs.
Merci.
Optitech
Messages postés134Date d'inscriptionsamedi 19 octobre 2002StatutMembreDernière intervention 3 janvier 2009 21 févr. 2007 à 11:28
Moi je rajoutreais un truc :
<? <= pas bon !
<?php <= Ok :)
C'est tout ;)
cs_putch
Messages postés624Date d'inscriptionmardi 6 mai 2003StatutMembreDernière intervention14 décembre 20091 21 févr. 2007 à 10:16
salut !
+1 jdalton42
1) pourquoi as-tu poster cette "source" ?
2) pourquoi considère-tu cette "source" comme de niveau "initié"
sinon pour allez plus loin dans la critique
Les +
un ereg pour tester l'email
Les -
if (!$_POST) : pas terrible comme test j'aurai mis if ( isset($_POST['submit']) )
trop de if else à mon gout
tu ne teste pas si la fonction mail() renvoi false
++
jdalton42
Messages postés200Date d'inscriptionsamedi 25 décembre 2004StatutMembreDernière intervention19 août 2009 21 févr. 2007 à 10:01
Salut !
alors déjà je suis entièrement d'accord avec les commentaires de jean84 mais surtout, c'est qu'il existe des dixaines de codes identiques sur ce site, sa ne sert absolument a rien d'en reposter un surtout aussi mal fait!
je demande à l'admin de désactiver ce code, y en a marre d'avoir des dixaines de sources identique sur ce site!
cs_jean84
Messages postés449Date d'inscriptionjeudi 26 août 2004StatutMembreDernière intervention 5 mars 2009 21 févr. 2007 à 01:59
Hello
Desole mais la je vais pas etre tendre car franchement y a des trucs a redire :
- le niveau de la source n'a rien a faire en inite, debutant et encore ...
- vue le nombre d'editeurs gratuits sur le net, il est impensable de trouver encore de nos jours des sources non indentes ! C'est une horreur ton code au niveau de la presentation !
- ta fonction form() est completement inutile, surtout que tu inseres des saut de lignes en plein dans tes guillemets ! PHP considere que des sauts de lignes sont des caracteres donc il va prendre du temps pour les afficher. En gros, il va afficher des caracteres qui ne servent a rien, a modifier donc !
- la fonction mail() renvoi une valeur indiquant si tout s'ets bien passe ou pas. Tu ne verifies pas et lorsque je teste chez moi, sa me marque message envoye alors que mon sevreur de mail m'a renvoye une erreur que php signale egalement (warning)... pense-y
Ne prend pas mal ce que je viens de te dire, c'ets juste pour ton bien ;-)
22 févr. 2007 à 17:03
Désolé mais ça m'a un peu énervé de voir ça.
Bon sinon je me suis aperçu que je n'avais pas posté le bon formulaire (j'ai 2 versions), je met l'autre.
21 févr. 2007 à 22:41
La prochaine fois post sur le forum avant histoire d'améliorer tout ca et de post une source comme on les aime ^^
21 févr. 2007 à 18:57
> Kankrelune
:$ un trou de mémoire mais merci pour le lien ;-)
J' ai lu la doc et je suis tombé sur un passage :
Pour explicitement convertir une valeur en booléen, utilisez les opérateurs de transtypage (bool) ou (boolean). Cependant, dans la plupart des cas, vous n'avez pas besoin d'utiliser ces opérateurs de transtypage, car une valeur sera automatiquement convertie si un opérateur, une fonction ou une structure de contrôle requièrent un argument de type booléen.
Donc dans le cas de cette source on peut usé de cette technique.
> Hood42
Calme toi !
On ne t 'insulte pas on te dit juste que ta source est trop "pauvre" et que tu as quelques progrès à faire.
Je t' ai envoyé ton formulaire remanié de la bonne façon pour te montrer comme écrire, pas pour t' insulter.
@+
21 févr. 2007 à 18:56
- 1 - ce n'est pas en polluant les sources de cs que l'on progresse... à la limite si tu voulais des avis pour progresser tu pouvais poster sur le forum en demandant les avis et critiques
- 2 - si tu relis les commentaires précédents tu verra qu'il y a de quoi progresser... critiques sur ton code... code exemple d'ImmortalPC et les amélioration que l'on peut y faire
- 3 - personne ne t'a engueulé... si recevoir des critique c'est se faire engueuler je vois mal comment tu compte progresser... tu t'attendait peut être à des applaudissements... franchement... ton code est pas mal pour un débutant cependant les remarques faites précédemment restent d'actualité...
A bon entendeur... .. !
@ tchaOo°
21 févr. 2007 à 18:24
21 févr. 2007 à 16:53
http://fr3.php.net/manual/fr/language.types.php
^_
@ tchaOo°
21 févr. 2007 à 16:46
chaines, booléen c' est quoi la différance ?
@+
21 févr. 2007 à 16:42
if($_POST['email'] && $_POST['sujet'] && $_POST['message'])
Ca marche effectivement mais au niveau syntaxe ce n'est pas bon ces données étant des chaines et non pas des booléen... qui plus est si mon message est "0" ça ne passera pas... bon c'est con de poster juste un zéro mais sait on jamais... .. . ;o)
@ tchaOo°
21 févr. 2007 à 16:24
le enctype est inutile mais tout comme pour le action c'est du détail... .. . ^_^
>> Pour "action" et "enctype", je trouve ma façon de faire plus précise.
-------------------
if(trim($_POST['email']) !== '' && trim($_POST['sujet']) !== '' && trim($_POST['message'] !== ''))
ou à la limite
if(!empty($_POST['email']) && !empty($_POST['sujet']) && !empty($_POST['message'])
>> Très juste l' ami ;-)
On peut aussi faire :
if($_POST['email'] && $_POST['sujet'] && $_POST['message'])
--------------------
if(preg_match(
plus souple et surtout plus rapide
>> Oups, désolé je savais pas. Merci pour l' info :D
--------------------------
alors là il y a peut être un hic... c'est à vérifier avec le preg_match mais on peut peut être faire une injection de header... si c'est le cas...
if(strpos($_POST['email'],"\n") !== false || strpos($_POST['email'],"\r") !== false)
// erreur
else
// ok
et si c'est pas le cas j'ais rien dis... aïe... non... aïe... pô taper... .. . ;o)
sinon
if(@mail($webmaster, $_POST['sujet'], $_POST['message'], 'From: '.$_POST['email']))
le @ evitera à php de lacher un warning si error_reporting n'est pas à 0 et s'il y a un problème lors de l'envoi... j'aurais tendance aussi à faire un htmlentities() sur le sujet et le message... .. .
>> - Pour l' injection dans le head c' est impossible (j' ai déjà essayé ^^) car il y a le (anciennement eregi) preg_match qui vérifit la chaine $_POST['email'] du début à la fin ;-)
- Pour le @ j' ai hésité à le mettre car c' est un code de débutant et les débutants en général ne config pas le php.ini
- Ensuite on doit bien faire un htmlentities sur le sujet, (oublis de ma part :S)
mais pas sur le message car le mail est par défaut est en mode txt.
----------------------------
" />
et
" />
Ca peut paraitre con mais si je poste un message contenant "pwet > plop" comme sujet ça risque de défigurer la page... .. .
>> Absolument on peut même faire bien plus :
" /><script>alert('une faille');</script><input type="text" value="
Il ne faut pas oublié de décodé les données en traitement
car s' il y a une erreur et que par exemple le sujet soit : il y a une érreur dans votre site
en encodé ça donne :
il y a une érreur dans votre site
puis
il y a une érreur dans votre site
ect...
@+
21 févr. 2007 à 15:36
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>"
=>
<form action="?"
le enctype est inutile mais tout comme pour le action c'est du détail... .. . ^_^
-------------------
if($_POST['email'] !== '' && $_POST['sujet'] !== '' && $_POST['message'] !== '')
=>
if(trim($_POST['email']) !== '' && trim($_POST['sujet']) !== '' && trim($_POST['message'] !== ''))
ou à la limite
if(!empty($_POST['email']) && !empty($_POST['sujet']) && !empty($_POST['message'])
--------------------
if(eregi(
=>
if(preg_match(
plus souple et surtout plus rapide
--------------------------
if(mail($webmaster, $_POST['sujet'], $_POST['message'], 'From: '.$_POST['email']))
=>
alors là il y a peut être un hic... c'est à vérifier avec le preg_match mais on peut peut être faire une injection de header... si c'est le cas...
if(strpos($_POST['email'],"\n") !== false || strpos($_POST['email'],"\r") !== false)
// erreur
else
// ok
et si c'est pas le cas j'ais rien dis... aïe... non... aïe... pô taper... .. . ;o)
sinon
if(@mail($webmaster, $_POST['sujet'], $_POST['message'], 'From: '.$_POST['email']))
le @ evitera à php de lacher un warning si error_reporting n'est pas à 0 et s'il y a un problème lors de l'envoi... j'aurais tendance aussi à faire un htmlentities() sur le sujet et le message... .. .
----------------------------
" />
et
" />
=>
" />
et
" />
Ca peut paraitre con mais si je poste un message contenant "pwet > plop" comme sujet ça risque de défigurer la page... .. .
@ tchaOo°
21 févr. 2007 à 13:35
voilà un bon formulaire :
<!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" dir="ltr"><head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-1" />
<title>Formulaire de contact</title>
<style type="text/css" media="screen">
<!--
p {
margin: 0px;
padding: 0px;
}
.error {
width: 80%;
margin : auto;
background-color: #FFB3B3;
border: 1px solid #BF0000;
text-align: center;
color: #FF0000;
}
.valid {
width: 80%;
margin : auto;
background-color: #CCFFCC;
border: 1px solid #006231;
text-align: center;
color: #008000;
}
//-->
</style>
</head>
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post" enctype="application/x-www-form-urlencoded" style="width:40%; border:1px solid #000000; margin:auto; padding:5px;">
<?php
$webmaster = 'www.immortalpc@free.fr';
// On vérifit si l' on a reçut des données
if(IsSet($_POST['email'],$_POST['sujet'],$_POST['message'])){
$_POST['message'] = html_entity_decode($_POST['message']);
// On vérifit que les données ne sont pas vide
if($_POST['email'] !== '' && $_POST['sujet'] !== '' && $_POST['message'] !== ''){
// On vérifit si l' adresse e-mail est valide
if(eregi('^[[:alpha:]]{1}[[:alnum:]]*((\.|_|-)[[:alnum:]]+)*@[[:alpha:]]{1}[[:alnum:]]*((\.|-)[[:alnum:]]+)*(\.[[:alpha:]]{2,})$', $_POST['email'])){
// On envoie le mail puis on vérifit s' il a été envoyé
if(mail($webmaster, $_POST['sujet'], $_POST['message'], 'From: '.$_POST['email'])){
echo 'Votre message a bien été envoyé.
Nous vous répondrons dans les plus pref délai.
',"\r\n";
}else{
echo 'L' e-mail n' a pas pu être envoyé.
Veuillez réessayer plus tard.
Merci.
',"\r\n";
}
}else{
echo 'Veuillez entrer une adresse e-mail valide.
Merci.
',"\r\n";
}
}else{
echo 'Veuillez remplir tout les champs.
Merci.
',"\r\n";
}
}else{
$_POST['email'] = '';
$_POST['sujet'] = '';
$_POST['message'] = '';
}
?>
<label for="email">Votre adresse email :</label>
" />
<label for="sujet">Sujet :</label>
" />
<label for="message">Message :</label>
<textarea name="message" id="message" cols="30" rows="5"><?php echo htmlentities($_POST['message']); ?></textarea>
</form>
</html>
21 févr. 2007 à 11:28
<? <= pas bon !
<?php <= Ok :)
C'est tout ;)
21 févr. 2007 à 10:16
+1 jdalton42
1) pourquoi as-tu poster cette "source" ?
2) pourquoi considère-tu cette "source" comme de niveau "initié"
sinon pour allez plus loin dans la critique
Les +
un ereg pour tester l'email
Les -
if (!$_POST) : pas terrible comme test j'aurai mis if ( isset($_POST['submit']) )
trop de if else à mon gout
tu ne teste pas si la fonction mail() renvoi false
++
21 févr. 2007 à 10:01
alors déjà je suis entièrement d'accord avec les commentaires de jean84 mais surtout, c'est qu'il existe des dixaines de codes identiques sur ce site, sa ne sert absolument a rien d'en reposter un surtout aussi mal fait!
je demande à l'admin de désactiver ce code, y en a marre d'avoir des dixaines de sources identique sur ce site!
21 févr. 2007 à 01:59
Desole mais la je vais pas etre tendre car franchement y a des trucs a redire :
- le niveau de la source n'a rien a faire en inite, debutant et encore ...
- vue le nombre d'editeurs gratuits sur le net, il est impensable de trouver encore de nos jours des sources non indentes ! C'est une horreur ton code au niveau de la presentation !
- ta fonction form() est completement inutile, surtout que tu inseres des saut de lignes en plein dans tes guillemets ! PHP considere que des sauts de lignes sont des caracteres donc il va prendre du temps pour les afficher. En gros, il va afficher des caracteres qui ne servent a rien, a modifier donc !
- la fonction mail() renvoi une valeur indiquant si tout s'ets bien passe ou pas. Tu ne verifies pas et lorsque je teste chez moi, sa me marque message envoye alors que mon sevreur de mail m'a renvoye une erreur que php signale egalement (warning)... pense-y
Ne prend pas mal ce que je viens de te dire, c'ets juste pour ton bien ;-)
@++