Daniel Kameni

Daniel Kameni

Yaoundé

,

Cameroun

www.kacart.be
“Think different !”

Le SiteDuZéro, la référence de quoi ? [article]

Non au culte du SDZ !

Salut à tous,

L'idée de ce post est d'etablir une critique du si connu SiteDuZero. L'idée nous est venue (à Palleas et Hugo) de mettre aux yeux du public les défauts de ce site. Avant de commencer, je tiens à signaler que je n'en veux pas du tout aux webmasters du site car je respecte tout de même leur travail et leur organisation. Par contre, ce qui m'agace le plus ce sont les personnes qui leur vouent un culte et qui ne jurent que par lui. Je ne dénoncerai alors que les défauts du SDZ dont je maîtrise le sujet, à savoir le HTML et le PHP. Mes mises en garde étant posées, j'entre dans le vif du sujet.<!--more-->

Le culte du SDZ

Tel un dieu, je m'aperçois chaque jour que ce site est le guide spirituel d'un bon nombre de « webmasters ». Ces personnes, je les retrouve sur des forums (tentant d'aider d'autres débutants) et même dans mon IUT (toute promotion confondue). Quand on leur demande comment ils ont « appris » (c'est là un bien grand mot) la programmation Web ou sur quel site trouver plein d'informations, la seule référence qu'ils ont est le siteduzero. Et c'est là que je m'énerve à dire qu'il n'y a pas que lui et qu'il est surtout loin d'être le meilleur... Pour moi (et certains développeurs que je connais), le meilleur site d'un langage de programmation est sa documentation officielle. Pourquoi ne pas utiliser ces mines d'or ? La question reste ouverte car je n'en ai pas la réponse...

Qu'es-ce qui ne vas pas sur le SDZ ?

Pour ne pas rester autant borné, j'ai essayé de me mettre à la place de toutes ces personnes. Je suis donc allé voir ce fameux site pour en prendre la température. J'ai regardé en travers les tutoriels XHTML et PHP et... là c'est le drame ! J'ai été incroyablement surpris. Des fautes, des anneries, des fausses vérités générales, des failles de sécurité, de la programmation à la « wallégain »... remplissent les tutoriels ! Le tout écrit de façon à vous prendre pour le plus con limité intellectuellement de la planète. C'est quand même très rabaissant et puéril pour l'internaute je trouve.
Je me suis donc demandé en quoi ce site était-il une référence ? Deuxième question à laquelle je ne peux apporter de réponse.

Un joyeux florilège de boulettes et de mauvaises pratiques

Je commence par ma citation préférée issue du premier tutoriel (x)HTML. Elle possède deux défauts. Tout d'abord elle est fausse, puis elle établit une vérité générale qui n'a pas de sens. Tout ça en deux lignes, chapeau !

Le XHTML est le langage qui remplace l'ancien, appelé HTML, dont vous avez peut-être entendu parler. Il y ressemble assez, mais le fonctionnement du XHTML est beaucoup mieux pensé. Bref, c'est lui le plus récent, c'est donc lui que nous allons apprendre.

Le xHTML n'a absolument rien à voir avec le HTML et ne le remplace(ra) en rien. De même, il n'est en rien mieux pensé que le HTML. Le fait que ce soit mieux pensé ou pas ne provient pas du langage de programmation mais du concepteur du site. HTML est très bien adapté à faire de très beaux sites fonctionnels utilisant des feuilles de styles. D'ailleurs, sachez que pour IE6.0 la différence entre HTML et XHTML est inexistante ! Le langage XHTML possèdent simplement les avantages d'être plus formalisés, plus portables, plus rigoureux, plus structuré et plus standard que le HTML car il repose sur les bases du XML (langage standard). Il ouvre aussi la porte à ce que l'on appelle le web sémantique (sens attribuées aux balises du document html pour donner du sens au contenu pour certains logiciels) et à l'accessibilité. Toutefois, sachez que HTML est aussi standard depuis sa version 4.01.

Voici une seconde citation de l'auteur du tutoriel qui me fait gentillement sourire.

Cependant, vous verrez si vous faites le tour des sites web que vous visitez régulièrement que nombre d'entre eux sont en design fixes. Certains disent trouver ça plus joli, mais je vais vous dire la vérité : c'est aussi parce que c'est plus facile à faire.

Je vous présente une nouvelle vérité générale qu'il tente de banaliser. Un design fixe n'est en rien toujours plus facile à réaliser qu'un design extensible. Si des concepteurs prennent le choix d'un design fixe c'est pour des raisons bien définies. Bien souvent pour des questions d'esthétisme et d'harmonie dans la page web.

Concernant les formulaires, j'ai pu relever la nouvelle boulette suivante au sujets des méthodes GET / POST.

method="get" : c'est une méthode en général assez peu adaptée, car elle est limitée à 255 caractères.

C'est encore absolument faux. La limitation de caractères dans l'url dépend à la fois du navigateur utilisé mais aussi de la configuration du serveur web.

Je vais en venir à présent au PHP, autre domaine que je maîtrise relativement bien. Le HTML est dans l'ensemble bien présenté, contrairement à PHP... Et oui, grâce au siteduzero, il est possible de devenir des programmeurs PHP ( ici PHP est l'acronyme de « Particulièrement Handicapé en Programmation » ). Je vous alerte tout de suite, vous foncez droit dans le mur (ou dans le vide...). Commençons par une première citation parmi tant d'autres.

A la question que l'auteur se pose à lui même : « Existe-t-il des pages qui ne contiennent que du PHP ? » Il répond l'absurdité suivante.

Mmh, en fait non, on a quand même toujours besoin du HTML pour faire une page web. On ne peut pas y échapper !

Oui HTML est le pilier d'une page Web mais on peut très bien trouver une page PHP qui contient exclusivement du code PHP qui va générer du code HTML.

On découvre par ailleurs d'autres perles anti-optimisation du type mauvaise utilisation des guillemets simples et doubles dans une instruction echo. On se retrouve alors avec des atrocités de ce type :

"Celle-ci a été écrite \"uniquement\" en PHP."; ?>

Et voilà, des milliers de personnes vont suivre cet exemple alors qu'avec un brin d'intelligence, ils leur auraient montré la ligne de code suivante :

echo 'Celle-ci a été écrite "uniquement" en PHP.'; ?>

Parmi les mauvaises pratiques de programmation PHP, en voici une typique de ce site que l'on retrouve sur moultes forums. C'est l'affreuse copie de variables. Et en plus déclarée en plein milieu de script...

// On se crée une variable $mot_de_passe avec le mot de passe entré $mot_de_passe = $_POST['mot_de_passe']; ?>

Quel est l'intérêt de dupliquer une variable qui existe déjà, mis à part de surcharger le script et le serveur ? Voilà un signe de la logique Siteduzéro.

Je continue sur ma lancée et je vous propose un excellent exemple d'anneries issu du siteduzero. Ca vaut franchement le détour !

<!--p </sp-->if (isset($_POST['pseudo']) AND isset($_POST['message'])) // Si les variables existent{ if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL) // Si on a quelque chose à enregistrer {

// D'abord, on se connecte à MySQL mysql_connect("localhost", "sdz", "mot_de_passe"); mysql_select_db("coursphp"); // On utilise la fonction PHP htmlentities pour éviter d'enregistrer du code HTML dans la table $message = htmlentities ($_POST['message']); $pseudo = htmlentities ($_POST['pseudo']);

// Ensuite on enregistre le message mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message')"); // On se déconnecte de MySQL mysql_close(); }} ?>

 

 

 

Tout d'abord les conditions. Voyez la méthode du gros bourrin pour tester la valeur null de la variable. Tout bon programmeur PHP aurait eu la subtilité d'utiliser la fonction native is_null. Malheureusement ce n'est pas inné pour tout le monde, dommage. Autre absurdité, deux nouvelles copies de variables avec htmlentities() avant insertion en BDD. C'est une très mauvaise pratique. On ne fait jamais de htmlentities() mais plutôt un htmlspecialchars() et encore moins avant l'enregistrement en BDD. On utilise tout simplement un simple mysql_real_escape_string() pour protéger les variables de l'injection SQL (pratique non abordée au passage par le SDZ). Bref goret inside !Avec Palleas, nous avons également repéré dans le même tutoriel :
  • Une utilisation de mysql_fetch_array() au détriment de mysql_fetch_assoc()
  • Du SELECT * en veux-tu en voilà. Les fainéants pourront les remercier
  • Code HTML en dur dans une boucle while ouverte avant puis fermée après plutôt que d'utiliser une instruction echo()

Palleas a, quant à lui, relevé une splendide faille de sécurité relative à la fonction include() que voici que voilà :

$page = $_GET['page'];include("$page.php"); ?>

Plus crade tu meurs. J'entends par là : copie de variables, faille de sécurité et les magnifiques guillemets inutiles autour de la variable. Bravo le siteduzero de montrer autant de conneries...Quant aux regex, elles en font palir plus d'un. Notamment Yves Maistriaud, webmaster du site Expreg.com qui est incontestablement la réfèrence française en la matière.

Conclusion

Je m'arrêterai ici mais ma liste évoluera certainement tellement les maladresses de ce site sont nombreuses. J'espère, qu'après lecture de ce billet, vous aurez un regard neuf et différent sur le site du zéro et que vous vous dirigerez davantage sur des sites spécialisés maîtrisant le sujet. Ce billet aura eu la prétention de vous démontrer que le SDZ n'est pas une référence en la matière. Je vous laisse pour information mes références favorites en programmation HTML et PHP :

Je ne crois uniquement à la Bible PHP

Expreg.com - référence française des expressions régulières

PHPDebutant.org - Apprendre PHP facilement

PHPScripts-fr - Forums spécialisés PHP et MySQL

Les billets de programmation PHP de Frédéric Bouchery

Alsacreations - tutoriels XHTML / CSS / Accessibilité / Standards Web

Openweb.eu.org - Standards et technologies du Web

Bible XHTML du W3C

By Emacs