RESTEZ TOUJOURS EN CONTACT ET RECEVEZ DES INFORMATIONS
cs_garfield90
Messages postés388Date d'inscriptionlundi 7 juillet 2003StatutWebmasterDernière intervention10 février 2009
-
17 août 2006 à 14:56
g_fuck
Messages postés269Date d'inscriptionlundi 29 novembre 2004StatutMembreDernière intervention23 août 2011
-
24 mars 2007 à 16:48
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
//Le message est suffisant pour permettre l'écriture sur le fichier (mes_messages.htm)
if($message) // -> déjà fait ;)
$file="mes_messages.htm"; //Le fichier sur lequel vous récupérez les messages envoyés
$anciens=fread(fopen($file, "r"), filesize($file));
// -> $anciens = file_get_contents($file); est plus simple
$date = date("d/m/Y");
$heure = date("H:i:s");
$retour = "\n";
$fp=fopen($file,"w");
$message= ereg_replace(chr(13),"
",$message); // replace chr(13) avec
// -> peut s'écrire nl2br($message) ;
// -> ici je passe les problemes de code HTML, l'histoire de l'utilisation des simple quote (') et des doubles quotes (") , de l'utilisation inutile de l'opérateur de concaténation (.)
$enreg="$anciens "."$compt " . "- "."Nom_Prenom: $nom_prenom
"."pays: $pays
"."ville: $ville
"."$retour "."Telephone: $Telephone
"."E_mail: $E_mail
"."Sujet: $Sujet"."message :
$message "." Le : $date "." - $heure <HR color=#FF0000 size=4>";
// -> la suite peut s'écrire autrement et je ne la comprends pas
// -> en fait si mais c'est pas logique, mauvaise gestion des attaques Cross Scripting
En gros, ce script :
- calcule le nombre de message envoyé par le dit formulaire
- ecrit le contenu du formulaire dans un fichier
EXEMPLE DE SOURCE A NE PAS
- Mauvaise conception du script
- non vérification des données extérieures ( ici ce sont les données en $_POST )
faire au moins les vérifications d'existance et non vide (ce sont 2 CHOSES DIFFERENTES)
- condition sans action en correspondance
tes if ( $message ) sont inutiles
- amélioration de la gestion des ressources
- utilisation inutile de variables ( moins d'espace memoire requis )
une variable ne doit etre crée que si elle est utilisée plusieurs fois
faire un $date = date('d/m/Y') juste pour l'afficher après est inutile
- utilisation combinée des " et . inutile ( temps processeur surchargé pour rien )
- de plus normalement pour la gestion des ressources (ici fichier mais peut etre BDD),
il faudrait :
- $contenu = 'générer la chaine a mettre dans le fichier';
- $fp = fopen('fichier/a/ouvrir', 'w+'); // on a évidement fait les vérifications d'usage avant ( fichier existant et inscriptible)
- fwrite($fp, $contenu);
- fclose($fp);
- peut se faire aussi avec file_put_contents('fichier/a/ouvrir', $contenu) avec PHP5
Pour l'instant c'est tout ce que j'ai a dire sur ce script car je passerai outre le nom respect des normes et des standarts
J'ai l'impression que ce code doit générer énormement d'erreur avec error_reporting(E_ALL);
Soit on laisse ce code pour montrer ce qui est a ne pas faire (quoique CS en est surchargé) soit on le supprime a appréciation des admins
PS : aucune note car ca vaut simplement le coup de dire que c'est un très mauvais script et d'écrire les raisons pour lesquelles ca l'est.
Je ne dis rien quand au reste des fichiers car ce n'est pas du PHP
A ta décharge, tu fermes bien les ressources ouvertes
24 mars 2007 à 16:48
29 août 2006 à 13:29
26 août 2006 à 04:29
18 août 2006 à 15:02
Pas besoin avec le mode w+ le fichier est créé s'il n'existe pas mais dans le principe je suis d'accord avec toi... .. . ;o)
@ tchaOo°
17 août 2006 à 16:06
sympa tes rimes en tout cas (je sais, ça ne commente pas la source, mais ça montre l'entrain dont tu fais preuve) c'est déjà bien ;)
17 août 2006 à 14:56
les commentaires (// ->) sont mes remarques sur le code.
<?
$message=$_POST['message'];
if($message) // -> je comprends pas l'utilité cette condition
$fichier = 'postcompteur.txt';
$nombre = file($fichier,'w+');
$compt = $nombre[0] + 1;
$new = fopen($fichier,'w+');
fwrite($new, "$compt");
fclose($new);
// -> pourquoi fermer (?>) pour rouvrir aussitot (<?), en passant <?php est mieux car plus compatible
?>
<?
// -> on m'a toujours dis de vérifier les informations provenant de l'exterieur
$nom_prenom=$_POST['nom_prenom'];
$pays=$_POST['pays'];
$ville=$_POST['ville'];
$Telephone=$_POST['Telephone'];
$E_mail=$_POST['E_mail'];
$Sujet=$_POST['Sujet'];
$message=$_POST['message'];
//Le message est suffisant pour permettre l'écriture sur le fichier (mes_messages.htm)
if($message) // -> déjà fait ;)
$file="mes_messages.htm"; //Le fichier sur lequel vous récupérez les messages envoyés
$anciens=fread(fopen($file, "r"), filesize($file));
// -> $anciens = file_get_contents($file); est plus simple
$date = date("d/m/Y");
$heure = date("H:i:s");
$retour = "\n";
$fp=fopen($file,"w");
$message= ereg_replace(chr(13),"
",$message); // replace chr(13) avec
// -> peut s'écrire nl2br($message) ;
// -> ici je passe les problemes de code HTML, l'histoire de l'utilisation des simple quote (') et des doubles quotes (") , de l'utilisation inutile de l'opérateur de concaténation (.)
$enreg="$anciens "."$compt " . "- "."Nom_Prenom: $nom_prenom
"."pays: $pays
"."ville: $ville
"."$retour "."Telephone: $Telephone
"."E_mail: $E_mail
"."Sujet: $Sujet"."message :
$message "." Le : $date "." - $heure <HR color=#FF0000 size=4>";
// -> la suite peut s'écrire autrement et je ne la comprends pas
// -> en fait si mais c'est pas logique, mauvaise gestion des attaques Cross Scripting
$enreg=str_replace("<?","'",$enreg);
$enreg=str_replace("\'","'",$enreg);
$enreg=str_replace("<?","'",$enreg);
fputs($fp, $enreg);
fclose($fp);
?>
Bilan :
En gros, ce script :
- calcule le nombre de message envoyé par le dit formulaire
- ecrit le contenu du formulaire dans un fichier
EXEMPLE DE SOURCE A NE PAS
- Mauvaise conception du script
- non vérification des données extérieures ( ici ce sont les données en $_POST )
faire au moins les vérifications d'existance et non vide (ce sont 2 CHOSES DIFFERENTES)
- condition sans action en correspondance
tes if ( $message ) sont inutiles
- amélioration de la gestion des ressources
- utilisation inutile de variables ( moins d'espace memoire requis )
une variable ne doit etre crée que si elle est utilisée plusieurs fois
faire un $date = date('d/m/Y') juste pour l'afficher après est inutile
- utilisation combinée des " et . inutile ( temps processeur surchargé pour rien )
- de plus normalement pour la gestion des ressources (ici fichier mais peut etre BDD),
il faudrait :
- $contenu = 'générer la chaine a mettre dans le fichier';
- $fp = fopen('fichier/a/ouvrir', 'w+'); // on a évidement fait les vérifications d'usage avant ( fichier existant et inscriptible)
- fwrite($fp, $contenu);
- fclose($fp);
- peut se faire aussi avec file_put_contents('fichier/a/ouvrir', $contenu) avec PHP5
Pour l'instant c'est tout ce que j'ai a dire sur ce script car je passerai outre le nom respect des normes et des standarts
J'ai l'impression que ce code doit générer énormement d'erreur avec error_reporting(E_ALL);
Soit on laisse ce code pour montrer ce qui est a ne pas faire (quoique CS en est surchargé) soit on le supprime a appréciation des admins
PS : aucune note car ca vaut simplement le coup de dire que c'est un très mauvais script et d'écrire les raisons pour lesquelles ca l'est.
Je ne dis rien quand au reste des fichiers car ce n'est pas du PHP
A ta décharge, tu fermes bien les ressources ouvertes