RESTEZ TOUJOURS EN CONTACT ET RECEVEZ DES INFORMATIONS

cs_garfield90 Messages postés 388 Date d'inscription lundi 7 juillet 2003 Statut Webmaster Dernière intervention 10 février 2009 - 17 août 2006 à 14:56
g_fuck Messages postés 269 Date d'inscription lundi 29 novembre 2004 Statut Membre Dernière intervention 23 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.

https://codes-sources.commentcamarche.net/source/39152-restez-toujours-en-contact-et-recevez-des-informations

g_fuck Messages postés 269 Date d'inscription lundi 29 novembre 2004 Statut Membre Dernière intervention 23 août 2011
24 mars 2007 à 16:48
je m'y connais as en php mai ton code .... sent mauvais ...... ya un truc suspect
GillesWebmaster Messages postés 496 Date d'inscription mercredi 30 juin 2004 Statut Membre Dernière intervention 29 juillet 2009 1
29 août 2006 à 13:29
J'aime bien ta poésie!
nmdeal2 Messages postés 9 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 5 août 2008
26 août 2006 à 04:29
mieux
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
18 août 2006 à 15:02
- $fp = fopen('fichier/a/ouvrir', 'w+'); // on a évidement fait les vérifications d'usage avant ( fichier existant et inscriptible)


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°
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
17 août 2006 à 16:06
Salut,

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 ;)
cs_garfield90 Messages postés 388 Date d'inscription lundi 7 juillet 2003 Statut Webmaster Dernière intervention 10 février 2009
17 août 2006 à 14:56
partie PHP du seul fichier PHP

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