TourDeJeu, le portail des jeux en ligne alternatifs, les articles 
TourDeJeu, le réseau des jeux en ligne alternatifs : jeux web multijoueurs, jeux par forum. En savoir +
En ligne : 485 jeux, 7148 news, 26651 commentaires
 

Recherche de jeu par critères - Un jeu au hasard !

Les Focus

Tech. : Le programmeur écologique
Tech. : automatisation et mails
Salon MondeDuJeu 2002
Revue de presse des JpC
Humour : 1001 raisons pour jouer
Ludique : le joueur parfait
Ludique : découverte du JpC
PHP : accès base de données
PHP : structure du site
Ludique : JpC et Temps réel
Jeux de rôles sans règles
Humour : astrologie du JpC
Tech. : Bases de données
MJ : les joueurs multiples
PHP : utilité pour un JpC
PHP : c'est quoi ?
Tech. : l'analyse des ordres
Ludique : débutants et vétérans
Tech. : archi Ultraball 2100
Ludique : les jeux de pronos
Tech. : le site Web d'un JpC
Humour : football et wargame
Présentation de TourDeJeu

PHP : structure du site

par Oelita

Jeu-pilote Fish Race, la suite ! on a déjà vu dans l'épisode précédent comment concevoir la base de données du jeu. L'étape suivante est ici de démarrer le site PHP. Le site PHP est avant tout un site Web, donc vous pouvez commencer par lire notre Focus sur le site web d'un JpC.

Dans cette étape, on va construire la structure du site. Il faut faire des fondations un peu solides, pour pouvoir aller plus vite ensuite. Il y plusieurs choses à voir avant de se lancer tête baissée dans le code du jeu lui-même.

Vous trouverez en fin de l'article un zip contenant les fichiers sources permettant de voir et tester tout ça chez vous !

Nom des pages

Tous les hébergeurs fournissant PHP ne sont pas encore passés en PHP v4, et beaucoup obligent encore les développeurs à nommer leurs fichiers sources avec une extension .php. C'est mon cas, et mes exemples suivront donc cette norme.

La première notion PHP à connaître et utiliser est l'include. Si vous avez du code commun à plusieurs pages (HTML ou PHP !), mettez-le dans un fichier à part, et appelez-le depuis vos différentes pages par la fonction include(). Indispensable. On nomme généralement ces fichiers avec l'extension .inc.php pour les différencier des pages complètes (.php) sans laisser la possibilité aux visiteurs indiscrets de regarder votre source (ce qui serait le cas en laissant le fichier s'appeler .inc : seuls les fichiers .php sont traduits par le serveur en HTML, les autres sont transmis tels quels au visiteur s'il en donne l'adresse !).

Graphisme et style

Il ne s'agit pas de vous lancer à fond dans le graphisme et les images, mais de prévoir comment gérer et stocker tout ça. Après ça, vous pourrez bricoler et améliorer vos images quand le coeur vous en dira, petit à petit, ou demander de l'aide à un copain. Ca sera gratifiant de voir le site prendre forme rapidement !

Feuille de style : connaissez-vous les feuilles de style CSS ? ce n'est pas du tout du PHP : il s'agit de rajouter dans votre code HTML des instructions qui vous éviteront de coder des tags de mise en forme partout dans votre code. Par exemple, vous indiquerez que tous vos paragraphes, tous vos contenus de tableaux, etc, utilisent la police Arial en taille 10. Ca tient en une ligne, et ça économise beaucoup de <font> ! Et si vous en avez marre d'Arial, il n'y a qu'une ligne à changer pour passer toute votre page en Verdana par exemple... le plus beau est que vous pouvez mettre toutes ces instructions dans un fichier à part, fishrace.css dans notre exemple, et qu'ensuite, toutes vos pages peuvent utiliser ce même style en codant juste dans le <head>: <link rel="stylesheet" href="fishrace.css">. A exploiter à fond !

Pour en savoir plus : le guide CSS de Technosphere, et le guide le plus complet mais en anglais : House of style.

En-tête et bas de page : il est classique d'avoir en haut de toutes vos pages un bandeau et un menu (comme chez TourDeJeu par exemple), et en bas de page quelques liens pratiques (email du webmaster, par exemple). Un moyen de faire ça sans se fatiguer est d'utiliser des frames, mais c'est plein d'inconvénients que je ne détaillerai pas ici. Il est préférable d'éviter ça, et le PHP vous le permet facilement. En PHP, vous pouvez en effet inclure un source dans un autre source. Vous allez donc construire un fichier d'entete nommé entete.inc.php et un bas de page nommé baspage.inc.php, et vous incluerez ces fichiers dans toutes vos pages. Vous pourrez aussi bien avoir un menu.inc.php que vous placerez où vous voulez sur vos pages.
Votre menu peut aussi être à gauche de vos pages : dans l'entete, vous ouvrez un tableau et créez une colonne de gauche dans lequel vous avez votre menu ; vous ouvrez une colonne de droite, et c'est tout. Dans le bas de page, vous mettrez la fermeture de cette colonne et du tableau, et le tour est joué. C'est ce qui est fait pour ceux de FishRace.

Administration du site

Vous aurez besoin de protéger certains sources PHP, comme celui qui contient les infos de connexion à la base de données. Vous aurez aussi besoin d'avoir des pages en accès réservé à l'arbitre. Pour tout cela, créez un répertoire spécifique dans votre site. Nommons-le ici "admin". Consultez votre hébergeur pour savoir comment restreindre l'accès direct à ce répertoire selon une liste de login/mot de passe système. Souvent, on fait cela en créant un fichier .htaccess dans le répertoire en question. C'est ce que je fais pour FishRace. A noter qu'en local il faut nommer ces fichiers autrement (par exemple htacces.txt) et les renommer par votre outil FTP une fois sur votre serveur.

Pour en savoir plus : la page d'explications sur les .htaccess de Free, un guide en anglais plus général chez ApacheToday.

Authentification des joueurs

Il va falloir aussi protéger l'accès aux pages ordres et CR de vos joueurs.. et là, pas de liste fixe des login et mot de passe, il faut un système souple. D'une part, il faut un système de saisie des login et mot de passe, et d'autre part, il faut passer ces paramètres à toutes les pages protégées, de façon fiable et non contournable...

Attention à ne pas uniquement passer l'ID du joueur en paramètre, trop facile de tricher, étant donné que l'ID est souvent visible de tous, ou pas trop difficile à deviner/fouiner !

Plusieurs solutions sont possibles, qui utilisent 2 systèmes principaux :

  • Passer le login et le mot de passe de page en page. On peut le faire via l'url (url.php?id=xxxx&pass=yyyy"), via un formulaire caché ou via l'authentification HTTP et les variables $PHP_AUTH_USER et $PHP_AUTH_PW.
    Inconvénient de ces solutions : on transporte des données permanentes, réutilisables directement si elles sont interceptées d'une façon ou d'une autre (ce n'est pas à la porté de chacun, mais disons que c'est un risque quand même).
  • Utiliser des sessions : à partir du login et du mot de passe saisis, une fois la vérification effectuée, on construit un ID de session, de valeur temporaire, et on le stocke dans la base de données. On ne passe ensuite que cet ID de page en page, soit directement en URL (pas très joli), soit en cookie. La phobie des cookies s'étant calmée, c'est une solution envisageable... le cookie réside sur le poste client et peut donc être bidouillé facilement par le client en question, mais comme l'ID de session n'est pas réutilisable, ce n'est pas grave. Si on est en PHP4, on peut directement utiliser les sessions de PHP4 (en savoir plus : très bon article de PHPinfo.net), sinon on construit soi-même un pseudo-système de session simplifié.

    Pour FishRace, on va utiliser un ID de session qui sera créé au login, stocké dans la base de données du serveur (table fish_joueur à créer), et transmis par cookie côté client. On crée une page de formulaire de login (jouer.php) qui renvoie vers une page (login.php) qui va vérifier les infos, et créer la session et le cookie. On renvoie ensuite vers une page spéciale au joueur (joueur.php). Toutes les pages en accès réservé à un joueur devront avoir la même structure que cette page. (merci à JB pour son aide)

    Première page d'administration

    Pour terminer notre première version du site, on crée une page de sommaire d'administration (admin/index.html) et une page de liste des joueurs (admin/listejoueur.php).

    Voila donc le squelette de notre site PHP constitué ! la prochaine étape sera l'inscription des joueurs d'une part, et la gestion des tables paramètres du jeu (rivières, espèces, parties, etc) d'autre part.

    Voici le zip contenant les données de cette première version, avec un readme.txt qui vous expliquera comment l'installer ! zip du site Fish Race v1.

    Le site de FishRace utilise ces mêmes sources, vous pouvez donc en voir les résultats (sauf l'administration) directement sur Fish Race. Les joueurs bidon existants sont toto, mot de passe titi, et killer, mot de passe go.

    Précédent - Suivant

    
  • Commentaires laissés par les visiteurs

  • The Fab, le 22-10-2001
    Hum...
    Petit tips... J'ai procd comme cela est dit dans l'article pour le haut de page, le bas de page... Mais je recommenderai plutot l'usage des templates qui sont beaucoup plus souples (faites une recherche sur SMARTY ou fastTemplate sur google) pour en apprendre plus ! En plus on peut mettre certaines pages trs charges (classement...) en cache, ce qui acclre notablement la navigation ! Bon courage tous, The Fab
  • Cedric (cedric.lefebvre@free.fr), le 17-10-2001
    Cool
    Encore bravo pour ce magnifique article. Je pense que tous les createurs de jeux apprecieront la qualite du travail effectue. J'ai un amis qui veut se lancer dans la creation de son propre jeu, je pense que cela lui servira de bible. ;-) Cedric
  • (c) TourDeJeu 2000-2020