Projet MuNewUser
But
- Faire une adaptation en template du module new user
- en profiter pour rajouter des options d'activation par liens dans l'email
- faire une inscription page par page (si on affiche dessuite les items optionnels on est sur que le gars va rechigner à s'inscrire).
Explication
L'inscription s'effectue sur quatre pages
- vérification de l'age*
- enregistrement de base (pseudo email pass)
- enregistrement des options*
- création d'un post de présentation*
les options avec des * sont activable ou desactivable à l'intérieur du panneau d'administration.
Version beta
vu qu'apparement personne n'est intéréssé je vais pas mettre le zip ;).
Faudra peut etre faire des tests la sécurité et l'envoie d'email (je sais pas trop comment tester sous easyphp).
Base de donnée
Une colonne activated est rajouté dans la table pn_user (il faut donc éditer le fichier pntables.php correspondant pour rajouter cette colonne)
Editez /pntables.php
recherchez
- 'commentmax' => $users . '.pn_commentmax',
- 'counter' => $users . '.pn_counter',
- 'timezone_offset' => $users . '.pn_timezone_offset');
remplacer par
- 'commentmax' => $users . '.pn_commentmax',
- 'counter' => $users . '.pn_counter',
- 'timezone_offset' => $users . '.pn_timezone_offset',
- 'activated' => $users . '.activated'); // mumuri
une autre table munewuser_activation est crée
cid|
cle| clé d'activation par mail
uid| identifiant utilisateur
uidcle| cle de vérification de l'uid
Normalemnet, la création de la table et le rajout de la colonne de la table se fait à l'install, mais j'ai pas encore testé (j'ia mis çà dans pninit.php).
Sécurité
De page en page, on doit garder des infos sur l'utilisateur, son uid par exemple, pour pas que l'utilisateur falsifie cette uid, on lui adjoint une uidcle qui est stocké dans la base de donnée (cette uidcle est un nombre aléatoire).
A chaque page, on récupére l'uid et l'uidcle
on récupérer dans la base l'uidcle réel correpondant à notre uid, et enfin on compare avec celui passé en paramétre.
De plus , on passe aussi un authid pour etre sur de l'identification de la personne.
- pnRedirect(pnModURL('MuNewUser', 'user', 'finishuser',array( 'uid' => $uid,
- 'authid'=> pnSecGenAuthKey(),
- 'uidcle' => $uidcle)));
Screenshot
page 1

page 2

page 3

Ce qui marche
- Initialisation du module [ok]
- Partie administration [ok]
- affichage ou non du message de limite d'age [ok]
- insertion des premiéres donnés dans la base [ok]
Code: [Télécharger] [Cacher]- 3 test test@est.fr blank.gif 1135420943 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL dcddb75469b4b4875094e14561e573d8 10 0 0 0 0 4096 0 12.0 1
le dernier champ est le champ activated, il est initialisé à 1 par défaut, pour dire que l'utilisateur n'est pas activé pour l'instant.
Page 1
- affichage du menu d'enregistrement [ok]
- -> affichage ou non des mots de passe [ok]
- -> gestion d'erreur [ok]
- -> sécurité par pnSecGenAuthId [ok] (si une personne récupére le lien de votre inscription et qu'elle essaye de le relancer, on lui dit qu'elle n'est pas autorisé à le faire)
Passage de la page 1 à la page 2 [ok]
- insertion dans la base activation [ok]
Code: [Télécharger] [Cacher]- pn_cid pn_cle pn_uid pn_uidcle
- 1 f935a2d9d46854746cb7d81da4b2bb16 3 0a0e6e53a924071287c4aaf0c0e6f0a6
- les liens sont de cette forme
index.php?module=MuNewUser&func=optionnalItems&uid=3&authid=d0cd0fd069d400b2f752eca66e7db86e&uidcle=0a0e6e53a924071287c4aafc0e6f0a6
authid pour vérifier que la personne qui a validé la premiére page est la méme que celle qui a validé la seconde
uidcle pour vérifier que l'uid est bien celui du nouveau inscrit et non un uid falsifié
- vérification des deux clés ok
Page 2
- affichage du menu ( avec avatar + timezone codé en temps que plugin du template)[ok]
- update de la base [ok]
Code: [Télécharger] [Cacher]- UPDATE pn_users SET pn_users.pn_url = 'http://topflood.free.fr' ,pn_users.pn_user_avatar = 'blank.gif' ,pn_users.pn_user_icq = 'testicq' ,pn_users.pn_user_occ = 'testoccu' ,pn_users.pn_user_from = 'testville' ,pn_users.pn_user_intrest = 'testinterest' ,pn_users.pn_user_sig = 'testsign' ,pn_users.pn_user_aim = 'testaim' ,pn_users.pn_user_yim = 'testyahoo' ,pn_users.pn_user_msnm = 'testmsn' ,pn_users.pn_user_viewemail = '1' ,pn_users.pn_timezone_offset = '12' WHERE pn_users.pn_uid= 5
Page 3 : présentation sur pnForum
- activation désactivation via le panneau admin ok , non affichage quand pnforum est pas installé [ok]
- fonction aperçu ok
- validation du post ok
Remarques
Vous aurez remarqué sur la page 1 que j'ai mis une variable votre nom qui est normalement une donnée optionnel.
Vous pouvez éventuellement modifié dans le template pour ne pas afficher le champs. A ce moment là il faudra le rajouté dans le template des éléments optionnels (si vous les demandez à l'inscription).
A faire dans une version ultérieur
- affichage des données dynamiques
- éffacage des utilisateurs non activés depuis un certain temps depuis le panneau administation
- envoyer un message de bienvenue à l'utilisateur
- rajouter les bbcode et les bbsmile pour les champs du profils bio et interest
FAQ
J'ai une erreur mysql dans la validation du premier formulaire ?
FAites la petite manip suivante
Editez /pntables.php
recherchez
- 'commentmax' => $users . '.pn_commentmax',
- 'counter' => $users . '.pn_counter',
- 'timezone_offset' => $users . '.pn_timezone_offset');
remplacer par
- 'commentmax' => $users . '.pn_commentmax',
- 'counter' => $users . '.pn_counter',
- 'timezone_offset' => $users . '.pn_timezone_offset',
- 'activated' => $users . '.activated'); // mumuri
les bbcode et bbsmile n'apparaissent pas ?
activer les 2 modules dans les options d'administration, puis aller sur le module MuNewUser et cliquez sur extensions, activer bbcode et bbsmile
affichage correct dans member_list
pour ne pas afficher les membres en cours d'inscription ou en attente d'activation,
rechercher dans modules/members_list/pnuserapi
- if (array_key_exists('activated', $userscolumn)) {
- if (!$sorting && pnConfigGetVar('filterunverified')) {
- $where .= "AND $userscolumn[activated] != '1'";
- } else if ($sorting && pnConfigGetVar( 'filterunverified')) {
- $where .= "AND $userscolumn[activated] = '0' ";
- }
- }
remplacer par
- if (array_key_exists('activated', $userscolumn)) {
- $where .= "AND $userscolumn[activated] = '0' ";
- }
modifié par : mumuri, 30 Déc 2005 - 20:21




