20.12.2005, 20:38 Gestion des espaces dans les noms d'utilisateurs
I. But
Permettre à des utilisateurs d'utiliser des noms composés tout en conservant la politique de sécurité du CMS
II. Explication
Pour garder un max de sécurité, on va pas stocker les noms d'utilisateurs dans la base avec les espaces. On remplacera çà par une suite de caractéres spéciaux. Un espace par exemple dans la base sera un "p20".
Ensuite, on va distinguer deux notions, l'affichage et le stockage. Si le nom d'utilisateur doit etre affiche, on lui applique un filtre qui remplace les p20 précédent par des espaces, parallélement si le nom doit etre stocké dans la base, on remplace les p20 par des espaces.
III. Implémentation
Le hack s'effectuera en trois temps :
implémentation des fonctions de base pour une gestion avec espace
modification de l'enregistrement et login des utilisateurs
modification des modules ou le nom d'utilisateur est utilisé
III. 1. Les fonctions de bases
III. 1. 1. Fonctions de bases standards
à mettre dans /includes/pnAPI.php, à la fin par exemple.
III. 1. 2. Smarty de bases
Un smarty est une fonction de base utilisable dans un template. Nous allons en faire une pour vous permettre d'afficher correctement les noms d'utilisateurs directement dans le template et pas forcément dans le code avec les fonctions plus hauts.Créer un fichier function.pnMPrepLoginForDisplay.php et mettez çà dedans, ce fichier nous servira plus tard.
III. 2. Enregistrement et login d'un nouvelle utilisateur
Ouvrir modules/NewUser/user.phpRechercherRajouter aprésOuvrir modules/User/user.phpchercherrajouter aprésSeulement pour moiOuvrir modules/User/user/access.phpRemplacer par
III. 3. Affichage correcte dans les modules
La partie la ch**te, maintenant il faut regarder dans chaque module, s'il n 'ya pas de p20 qui s'affiche à tout va. Auquel cas, on utilise les fonctions du I pour arranger çà.
Copier le smarty crée plus haut dans le dossier modules/Members_List/templates/pluginEnsuite dans les tous les templates ou le nom s'affiche, on va filtrerPar exemple, ouvrir modules/Members_List/templates/memberslist_user_view.htmRechercherRemplacer par RechercherRemplacer par
III. 3. 3. Module pnForum
Là c'est plus simple , en fait on va directement hacker un smarty existant.Ouvrir /modules/pnforum/template/plugin/modifier.profilelink.phpRechercherRajouter aprés Encore une petite chose pour que les recherches sur les noms d'utilisateur s'éffectue correctement.Rechercher (vers la ligne 3000-3500)Rajouter aprésRechercherRajouter aprés
III. 3. 4. Module Messages
Copier le smarty crée plus haut dans le dossier modules/messages/templates/pluginOuvrir modules/messages/templates/messages_user_view.htmRechercherremplacer parOuvrir modules/messages/templates/messages_user_new.htmRechercherRemplacer parRechercherRemplacer par
III. 3. 5. Block membres en lignes
ouvrir includes/blocks/i-members_online.phpRechercherRemplacer par
Ensuite, c'est à vous de faire pareille dans les autres modules ou y a des éventuelles problémesClubic est cité en exemple, car ils ont de trés bon taux de téléchargement et un service de trés bonne qualité.
Si ca ne marche pas, vous pouvez aussi chercher le nom du fichier service-pack-4-windows-2000_service_pack_4_windows_2000_francais_13276.exe ou w2ksp4_fr.exe
IV. Remarque
D'autres astuces peuvent être trouvé avec la commande inurl, mais je n'ai pas d'exemples sous la main.
Merci de ne pas copier-coller ce post, faites plutot un lien vers celui ci
Vous pouvez aussi utiliser l'attribut intitle:titre pour trouver les pages qui ont le titre spécifier dans les recherches.