Formes

Une petite pensée juste comme ça… ça fait quatre personnes que je connais qui se plantent en mettant de l'essence dans leur super moteur diesel. Et hop, un petit passage chez le garagiste et 200€.

Mais pourquoi ne font-ils pas des pompes avec des formes, comme en maternelle ? Je vois d'ici le truc : le sans plomb en étoile, le gasoil en cercle, le GPL en carré. Et hop, même le plus parfait des crétins ne peut plus se planter ! Il me semble d'ailleurs que c'est le système adopté par certaines imprimantes laser.

Si ça ne s'est pas encore fait, je parie que c'est encore le lobby des garagistes qui s'y oppose…

Aujourd'hui, nous allons réaliser une authentification HTTP directement depuis PHP, sans passer par un système de .htpasswd.
Pour ceux qui ne connaîtraient pas le terme, l'authentification HTTP c'est cette petite fenêtre qui s'affiche pour demander le login / mdp d'une personne et déterminer si elle peut consulter la page.
Habituellement, on réalise cela directement avec un module d'Apache : on indique que tel fichier doit être protégé, avec des options relativement poussées : pour chaque fichier / répertoire, on peut indiquer que l'accès nécessite une authentification, ou plus restrictif l'appartenance à un groupe.

Il s'agit d'une option utile, mais malheureusement un peu limitée : que faire par exemple dans le cas d'un URLRewriting qui fait tout pointer vers un même fichier, du type index.php?Page=PAGEDEMANDÉE ? Il y a bien une option pour cela, mais elle n'est pas accessible depuis les fichiers .htaccess…
Plus intéressant encore, que faire si on a aussi un module de login standard réalisé par un formulaire HTML ? Imaginez un admin qui se connecte depuis l'interface membre, puis veut rejoindre la partie admin du site protégée par identification HTTP : pourquoi devrait-il se reconnecter une nouvelle fois alors qu'il est déjà loggé ?
Enfin, la gestion des utilisateurs imposée par Apache n'est pas facile à maintenir puisqu'elle nécessite un fichier spécial (souvent nommé .htpasswd) : cette solution permet de s'affranchir de cette contrainte et d'utiliser un sytème de login avec une base de données / un service distant / ce qui vous plaît : c'est quand même plus évolutif !

Il m'arrive souvent, au détour d'une conversation, de glisser une référence à 4chan. Référence qui passe le plus souvent inaperçue… pourquoi ? Parce que 4chan est un bastion geek, un site underground à nul équivalent. Ce n'est pas un site dédié à la technique, au hacking, et pourtant c'est un des sites les plus nerds que je connaisse.

Cet article tente de répondre à la question "c'est quoi 4chan". Il est loin d'être exhaustif, vous laissera forcément avec une vision partiale... mais je l'ai parsemé de liens pour que vous puissiez vous faire votre propre idée.

Plongée dans les bas-fonds.

4chan, c'est un bouillon de culture, un énorme foutoir sans queue ni tête dirigé uniquement par l'envie du moment, avec un parfait esprit moutonnier. Et avec plusieurs millions de moutons potentiels, des fois ça tâche.

Rentrant tranquillement de week-end, je découvre un de mes sites dans un état bizarre :

Parse error: syntax error, unexpected '<' in /un/chemin/absolu/index.php on line 199

Étrange, j'avais pourtant un site fonctionnel en partant. Peut-être un collaborateur qui a fait un fausse manip ?

En fait, j'allais rapidement comprendre que non...

Je m'étais promis de diffuser ces deux vidéos quand Icosien atteindrait le 100 000ème joueur.
Au moment où j'entame l'écriture de cet article, nous en sommes à 99 366, et ça grimpe à une vitesse d'une cinquantaine de joueurs par minute.

Pourquoi diffuser une solution ? Le concept peut choquer les puristes, mais j'ai des arguments. D'abord, cela évite que les gens abandonnent : dans la deuxième partie, la difficulté des niveaux dépend du mode de raisonnement des gens, et certains bloquent sur un niveau que d'autres trouvent simple. Rendre disponible la solution évite de laisser des joueurs sur le tapis, et donne à chacun la possibilité de finir le jeu.

Attention, je ne force personne à regarder ces vidéos. Au contraire, je vous incite fortement à réfléchir avant de regarder cette vidéo, et à ne la visionner qu'en tout dernier recours – juste avant l'étape "je balance mon PC par la fenêtre".
Et je respecterai ceux qui finissent le jeu sans regarder la solution (ou s'y acharnent, l'important étant de participer). Sans pour autant mépriser ceux qui regardent.

Dernier point : d'autres ont déjà rédigé la soluce, alors pourquoi pas moi ? C'est pas parce que c'est mon jeu que je dois me limiter ;)

Voilà donc la solution, à consommer avec modération.

Première partie : Euler

Seconde partie : Hamilton