Module d'inscription - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : Module d'inscription (/showthread.php?tid=5126) |
Module d'inscription - NicoMSEvent - 21-12-2010 Vu le grand nombre de demandes pour les techniques de base, je me lance, et je vous donne un petit tutorial qui se veut être simple, agrémenté de liens vers le Site du Zéro afin de peaufiner vos connaissances. Ceci est une esquisse, j'éditerai ce sujet pour clarifier, expliquer les points sombres, et ajouter des liens. La programmation d'un jeu tourne bien souvent autour d'un objet principal (on reparlera d'objets par la suite), et cet objet est le joueur. Qu'est ce que devrait faire un joueur sur votre jeu? ... Avant de jouer? S'inscrire! En effet, chaque joueur à un état d'avancement différent, il a des ressources à lui, un score, des vies... enfin, tout ce qui lui est propre, et qui lui permet de se différencier des autres joueurs. Mais pour ça, il faut savoir le reconnaitre entre les autres. Comme les visiteurs sont anonymes, nous allons leur demander des information uniques afin de pouvoir les reconnaitre. Donc, en résumant, il faut qu'on stocke les informations suivantes concernant ce joueur : Identifiant : numéro unique qui nous permettre de repérer rapidement dans notre système notre joueur (le joueur n'a a priori aucun intérêt à connaitre cet identifiant, car ce n'est pas utile) Nom du joueur, Mot de passe, E-mail : chaines de caractères que le visiteur va nous fournir Score : ici, pour mon exemple, je vais utiliser un score (on pourrait mettre n'importe quoi d'autre comme des points de vie), et que le joueur ne maitrise par directement. Le plus simple serait de commencer par le stockage de ces données. Je vais directement utiliser une base de données. MySQL puisque c'est une base de données qui est présente sur la majorité des hébergeurs. 1°)Le SQL? C'est quoi ça? Un langage qui permet de manipuler des données! (lien vers le SdZ : tutorial SQL) L'utilisation de MySQL, PHPMyAdmin, et les autres outils de base (client FTP) feront l'objet d'un autre tutorial (en construction, dès qu'il sera fini je remplacerai ceci par le lien). Nous avons une table qui pourrait être crée comme ceci (ou par des choix divers dans l'interface de PHPMyAdmin)
On va d'abord vérifier que le nom ou l'email n'existent pas déjà (il existe d'autres moyens qui seront abordés dans un tutorial a venir) :
On va remplacer les %s par les valeurs qu'on souhaite tester, mais on verra ça plus loin.Si je n'ai aucune ligne qui s'affiche, c'est que le nom et l'email ne sont pas utilisés. On va pouvoir inscrire notre nouveau joueur.
C'est bien joli, mais on n'a pas encore notre site qui va permettre l'inscription! C'est là qu'intervient le HTML (et le PHP). 2°)Le HTML est un langage qui comporte des <balises>, qui va servir a l'affichage, et le PHP lui est exécuté par le serveur pour nos traitements. (lien vers le SdZ : tutorial xHTML)
Voilà donc un peu de HTML. J'ai un FORMulaire avec différentes entrées (INPUT) qui vont permettre d'entrer les différentes informations. Il existe différentes sortes d'entréeDans ce formulaire, on retrouve ceci (lien vers le SdZ : tutorial formulaires HTML) : -Le TEXT normal -PASSWORD qui correspond au mot de passe -SUBMIT qui va envoyer les informations sur le serveur lorsqu'on clique dessus. Mais comment va-t-on récupérer ces informations? 3°)Le PHP va nous permettre de récupérer les informations du formulaire, et les enregistrer (lien vers le SdZ : tutorial PHP)
Voilà, ça sera tout pour aujourd'hui, le visiteur est inscrit! Demain, on verra le module d'identification! (ou comment les visiteurs vont entrer dans le jeu) RE: [Tuto] Module d'inscrption - Jeckel - 21-12-2010 Très bon tuto pour commencer, quelques remarques : Premièrement, il faudrait rajouter le script de création de la table, avec les index, les uniques (nom d'utilisateur en unique, et email aussi), et l'auto-increment. Deuxièmement, tu ne tests pas les valeurs vide (cas où $_POST['nom'] n'existe pas ou est vide). Troisièmement, plutot que de faire une boucle pour tester s'il existe ou non un utilisateur avec le même nom ou email, tu peux utiliser mysql_num_rows. Ensuite pour protéger ses requètes, il vaut mieux utiliser la fonction mysql_real_escape_string. Enfin, utiliser le décodage en UTF-8 c'est bien, mais si tu te lance là-dessus, il faut rajouter les headers, les content-type etc.. pour forcer l'UTF-8 sur toute la chaine (et aussi en base de donnée d'ailleurs)... bref, là tu t'engages dans un truc plus compliqué. RE: [Tuto] Module d'inscrption - Hell-AstiK - 21-12-2010 Bon tuto, fallait s'y lancé Je dirais juste que la dernière ligne de ton code php ne sert a rien ^^ attention au commentaire PHP hors tags PHP Citation :?> // fin du script PHP Sinon j'aurais dit la même choses que Jeckel, soit tu sécurise ton script, soit tu précise qu'il ne l'est pas et qu'il faut le faire. Ensuite, je pense qu'il y a des points qu'il ne devrait pas être expliquer, sachant que lorsqu'on créer un jeu, on devrait avoir un minimum de connaissance en langage de programmation (ici HTML,PHP) Tu devrait juste expliquer comment faire ton module, les points particulier, et ne pas dire par exemple : Citation :<?php // un script PHP commence par ceci, le serveur web va identifier ce qui suit comme du PHP. Bonne continuation pour ce tuto EDIT: modifier le titre aussi ^^' RE: [Tuto] Module d'inscrption - NicoMSEvent - 21-12-2010 je voulais rester le plus générique possible, que celui qui n'a jamais touché au php, au html, au SQL, sache faire qqch avec ceci... j'ai peut-etre trop détaillé, enfin bon, j'ai aussi mis des liens vers le SdZ. Il n'est pas parfait, c'est surtout pour avoir une premiere approche. Je corrige quelques points, et j'attends les critiques Edit : je vérifie l'unicité par PHP, pour le SQL, je ne vais pas commencer avec les contraintes/index/ ..., c'est déjà suffisamment compliqué comme ça pour un néophyte ^^ ça sera le sujet d'un autre tuto. Je crois que ça pourrait déjà aider quelques nouveaux, et nous épargner les sempiternelles questions : "Comment/Par quoi on commence?" "Comment on fait ci ou ça?" RE: [Tuto] Module d'inscrption - Dexyne - 21-12-2010 Pourquoi n'utilises-tu pas la fonction isset de PHP pour vérifier que des valeurs ont bien été entrer via le formulaire ? Y'a-t-il une différence niveau sécurité si j'utilise extract puis faire un :
à la place de le faire directement avec $_POST['nom'] ? Je ne comprend pas pourquoi tu utilises la notion d'objet au début (rapport à la poo ? ou juste comme ça ? :p vu qu'après tu n'utilises pas de POO je me demandais). Sinon bon tuto ça permettra d'aider certains j'en suis sure . RE: [Tuto] Module d'inscrption - Vache.Elevage - 21-12-2010 Merci pour ce tuto , moi je galérais à le faire mais ce tuto va m'aider RE: [Tuto] Module d'inscrption - Hell-AstiK - 21-12-2010 (21-12-2010, 09:11 PM)Dexyne a écrit : Pourquoi n'utilises-tu pas la fonction isset de PHP pour vérifier que des valeurs ont bien été entrer via le formulaire ?Je dirais plutôt empty() ! isset peut vérifier que la variable existe. empty peut vérifier que la variable existe, et qu'elle n'est pas vide. RE: [Tuto] Module d'inscrption - Jeckel - 22-12-2010 (21-12-2010, 10:26 PM)Hell-AstiK a écrit :(21-12-2010, 09:11 PM)Dexyne a écrit : Pourquoi n'utilises-tu pas la fonction isset de PHP pour vérifier que des valeurs ont bien été entrer via le formulaire ?Je dirais plutôt empty() ! Je vais chippoter mais, si je ne me trompe pas, si la variable ou l'index du tableau n'est pas définie, empty lève un Notice ou un Warning... de plus il ne gère pas tous les cas... Une façon un peu plus propre serait :
Pour aller plus loin, trim devrait même être remplacée par une fonction qui filtre correctement la donnée : suppression des blancs en début et fin de chaine, suppression des balises HTML (les petits malin qui mettent du HTML dans leur nom), suppression des caractères invisibles et non alpha-numérique, etc... et c'est le résultat de ce filtre qui doit être testé. Oui, je sais, je suis un maniaque... RE: [Tuto] Module d'inscrption - niahoo - 22-12-2010 Et l'indentation !?! Bouh ! Sinon bonne initiative ! RE: [Tuto] Module d'inscription - NicoMSEvent - 22-12-2010 C'était aussi en partie pour ça que j'utilisais le html_entities au lieu de mysql_real_escape_string... mais bon, là on entre dans les finesses de la programmation. Ce tutorial donne les bases, maintenant ceux qui souhaitent améliorer ceci peuvent donner leurs suggestion s:p |