8792 sujets

Développement web côté serveur, CMS

Bonjours tout le monde,

Il y as un peut plus d'un mois, je me suis lancé dans le PHP, j'ai fait un livre d'or pour mon site, je l'ai mis sur mon propre site, et maintenant j'envisage de le proposer en téléchargement sur mon site.

Ce que j'aimerais bien, c'est qu'une où plusieurs personnes qui ont pas mal d'expérience en PHP relisent plus ou moins vite mon code et qu'ils me disent ce qu'ils en pensent, au niveau de la sécurité, de la propreté du code, de ce qu'il y aurais à améliorer (sans parlé fonctionnalité) où comment vous auriez fait certains passages.

Je remerci bien d'avance ceux qui voudront bien s'y plonger.

Donc, je l'ai organisé en trois fichiers :
- index.php : le livre d'or en lui même,
- administration.php : zone d'administration qui permet de modifier ou de supprimer un message
- configuration.inc.php : fichier contenant toute les variables de configurations

Pour voir le code : http://www.pierre4012.info/source-livre/
Merci.

A+, Pierre.
Modifié par Pierre4012 (19 Jul 2006 - 00:48)
Salut,
bon je suis pas un expert du PHP mais je vais te répondre avec ce que je vois.

if (isset ($_POST['pseudo'])) {$pseudo=$_POST['pseudo'];}
if (isset ($_POST['message'])) {$message=$_POST['message'];}

Quitte a réassigner les valeur, autant que ça serve a quelque chose. Juste en dessous tu test sur les variables sont vide, mais tu oubli que l'utilisateur peut se contenter de ne mettre qu'un espace Smiley smile
La fonction trim() sert a retirer les espace au début et à la fin d'une chaine.
if (isset ($_POST['pseudo'])) {$pseudo=trim($_POST['pseudo']);}
if (isset ($_POST['message'])) {$message=trim($_POST['message']);}


La je vois encore un problème :
// Si il y a un message posté  mais pas de nom, on le dis et on remet le message
if (empty ($pseudo) && !empty ($message))
{
    $message=stripslashes ($message);
    echo '<p style="color:orange; font-weight:bold;">Vous avez oublié de mettre votre nom !<br/><br/>Veuillez le rajouter SVP (en bas de la page).</p>';
    $remettre_message=1;
}
// Si il y a un message et un pseudo posté, on passe à la suite
elseif (!empty ($pseudo) && !empty ($message))
{

Tu ne gére pas le cas ou il y aurais juste un pseudo ?!
Et les variables $pseudo et $message tu les test, mais que ce passe t'il si elle ne sont pas défini ?

Il y a aussi sans cesse des echo 'voici du texte plein d\'apostrophes';
Plutôt que d'avoir a sans cesse echapper les ' avec un \, pourquoi ne pas faire echo "voici du texte plein d'apostrophes"; ??

Voilà ya aussi beaucoup de stripslashes un peu partout, or on n'est pas censé connaitre le fonctionnement des magic quote sur le serveur client.
Il est donc quisiment indispensable que tu t'inpreigne de cette saine lecture : http://www.toutprogrammer.com/article_20.html Smiley langue
La c'est une question de sécurité alors attention Smiley cligne

Voilà je vais en laisser un peu aux autres Smiley biggol il se fait tard, bonne continuation ! Smiley cligne
Salut,

Merci de t'y être penché.

Exacte, pour le trim c'est pas bête, ça évite d'avoir des messages trop pouris ...

Ensuite, je ne gère pas le cas ou il n'y a qu'un pseudo, parce qu'un pseudo c'est pas long à écrire, et si le mec ne met que son pseudo, c'est vraiment qu'il n'est pas réveillé ...

Pour les magic_quote, puisque je ne me sert que de la fonction stripslashes(), même si se script est mis sur un serveur sur lequel magic_quotes n'est pas activé, le fonction ne retirera aucun slashes, donc à priori ça ne pose aucun problème. T'en pense quoi, je me trompe ?

Pour les echo 'abc d\'efg'; à la place des echo "abc d'efg";, c'est qu'apparament, les chaines de caractères sont plus vites parsés par l'interpréteur de PHP quand elles sont entourés de ' plutôt que des ".

A+, Pierre.
Modifié par Pierre4012 (23 Jul 2006 - 15:46)
Salut,
juste à propos de :
Pierre4012 a écrit :

Pour les echo 'abc d\'efg'; à la place des echo "abc d'efg";, c'est qu'apparament, les chaines de caractères sont plus vites parsés par l'interpréteur de PHP quand elles sont entourés de ' plutôt que des ".

Cest pas faux, mais la différence n'st pas non plus énorme. Donc si tu as une chaine qui ne contient qu'une apostrophe, tu peut l'échapper en gardant des simples quotes, mais si tu commence en avoir tous une tripotée, utilise plutot des doubles-quote, car aprés, ça peut devenir la prise de tête pour s'y retrouver.

A+