| Auteur |
Sujet |
mumuri
Franc-Maçon
enregistré depuis : oct. 2005
Messages : 639
dernière visite: 04.07.08
|
Le but est de forcer les utilisateurs qui s'inscrivent à mettre une majuscule sur leur pseudo,
- la premiére solution serait de faire un ucfirst directement dans le code php mais on va devoir appliquer la modification à chaque maj de postnuke. (développeur)
- La deuxième solution est de le faire en javascript (couplé avec un onkeydown ,ou un Event.observe(document,'keydown',mafonction); pour prototype) (graphiste)
- la troisième une tache cron qui tourne réguliérement et lance la requête sql suivante (admin systéme)
- UPDATE `pn_postnuke`.`pn_users` SET `pn_uname` = CONCAT(UPPER(SUBSTRING(pn_uname, 1, 1)), LOWER(SUBSTRING(pn_uname FROM 2)))
modifié par : mumuri, 22 Avr 2008 - 14:08
|
| 22.04.2008, 13:47 |
|
 |
Gilles
Grand Maître
enregistré depuis : jui. 2005
Messages : 2191
dernière visite: 04.07.08
|
Le soucis est qu'il me semble qu'il faut ensuite que l'user s'authentifie avec la majuscule... et donc pour que celà fonctionne rajouter un bout de code/ javascript modification sql afin de permettre à l'utilisateur qui mettra toto de s'authentifier en Toto.
++
Gilles ><>°
|
| 22.04.2008, 14:34 |
|
 |
YokaV
Grand Maître
enregistré depuis : déc. 2005
Messages : 600
dernière visite: 20.06.08
|
A mon avis la solution la plus intéressante serait de le faire en ajax vu qu'il y a déjà une vérification ajax sur l'identifiant lors de l'inscription, mais comme tu dis le désavantage est qu'il faut maintenir cette modification en place lorsque l'on fait une maj.
-------------------------------------------
...n'oubliez pas que l'outil Recherche est votre ami !
...bien souvent il répond à nos questions avant même que l'on ne se les pose ! ^^
|
| 22.04.2008, 14:35 |
|
 |
magicvince
Récupérable
enregistré depuis : oct. 2005
Messages : 133
dernière visite: 28.06.08
|
En fait, je ne trouve pas tant que le problème soit sur le login que sur le "realname". D'autant que le risque qui va ensuite se poser est que lorsque l'on voudra utiliser OpenID (un système d'identification unique).
La façon dont le visiteur s'identifie, on s'en fout, ce qui peut nous gêner c'est la façon dont son nom apparait sur le site que se soit lorsque l'on liste les membres en ligne ou lorsqu'on indique l'auteur d'une news, d'un post...
Personnellement je préférerais par exemple que l'on puisse avoir (sur certains sites) à la place du "uname" (username), le "realname".
Je suppose qu'il faut alors reprendre les templates et remplacer "uname"... par quelque chose mais j'ai pas trouvé quoi... et google n'est pas mon ami ni la patience sur ce détail.
Ensuite la solution serait d'avoir une fonction pnRender "Initiale en Maj" que l'on pourrait inclure dans les templates et qui permettrait sur n'importe quelle chaîne de forcer la première majuscule (au risque de casser l'effet de certains 933ks)
(Au passage en terme de sécurité, si tu forces la première lettre en majuscule, tu diminues 26 possibilités la probabilité de la première lettres...)
|
| 22.04.2008, 14:59 |
|
 |
mumuri
Franc-Maçon
enregistré depuis : oct. 2005
Messages : 639
dernière visite: 04.07.08
|
non Gille, j'ai testé sur la 0.8, que tu te loggues en "pseudo" ou "Pseudo" çà passe, d'ou l'intêret de la manip
|
| 22.04.2008, 15:12 |
|
 |
Gilles
Grand Maître
enregistré depuis : jui. 2005
Messages : 2191
dernière visite: 04.07.08
|
Citation : (Au passage en terme de sécurité, si tu forces la première lettre en majuscule, tu diminues 26 possibilités la probabilité de la première lettres...)
j'ai failli poster un truc dans ce genre tout à l'heure mais comme le nom d'user est visible de partout de toute façon, l'user est dispo !
++
Gilles ><>°
|
| 22.04.2008, 15:33 |
|
 |
YokaV
Grand Maître
enregistré depuis : déc. 2005
Messages : 600
dernière visite: 20.06.08
|
mumuri a écrit : non Gille, j'ai testé sur la 0.8, que tu te loggues en "pseudo" ou "Pseudo" çà passe, d'ou l'intêret de la manip
Euh les identifiants ne seraient donc plus sensible à la casse ?!
Si c'est le cas la solution à ton problème est "toute simple" juste avant l'enregistrement sql mettre la première lettre en majuscule puisque même si l'utilisateur se connecte avec un identifiant tout en minuscule ça fonctionnera.
-------------------------------------------
...n'oubliez pas que l'outil Recherche est votre ami !
...bien souvent il répond à nos questions avant même que l'on ne se les pose ! ^^
|
| 22.04.2008, 15:41 |
|
 |
mumuri
Franc-Maçon
enregistré depuis : oct. 2005
Messages : 639
dernière visite: 04.07.08
|
YokaV a écrit :
Euh les identifiants ne seraient donc plus sensible à la casse ?!
testé sur une vielle RC2 en admin avec Admin dans la base, et Admin avec admin dans la base
je reteste avec la dernière version du SVN ce soir ...
YokaV a écrit :
Si c'est le cas la solution à ton problème est "toute simple" juste avant l'enregistrement sql mettre la première lettre en majuscule puisque même si l'utilisateur se connecte avec un identifiant tout en minuscule ça fonctionnera.
j'évite de toucher au code du core et je m'y connais pas assez en trigger pour faire çà
|
| 22.04.2008, 16:59 |
|
 |
YokaV
Grand Maître
enregistré depuis : déc. 2005
Messages : 600
dernière visite: 20.06.08
|
mumuri a écrit : j'évite de toucher au code du core et je m'y connais pas assez en trigger pour faire çà
Boh c'est pas vraiment dans le core.../system/Users/pnuser.php -> fonction users_user_finishnewuser().
Au tout début de la fonction il y a :
- $uname = strtolower(FormUtil::getPassedValue ('uname', null, 'POST'));
J'ai pas trop regardé la suite mais si ils font un strtolower dés le début il y a peu de chance qu'ils touchent encore à la chaine après, à part pour supprimer les caractères spéciaux, donc après le strtolower tu appelles ta fonction php qui met la première lettre en majuscule et c'est bon.
-------------------------------------------
...n'oubliez pas que l'outil Recherche est votre ami !
...bien souvent il répond à nos questions avant même que l'on ne se les pose ! ^^
|
| 22.04.2008, 17:16 |
|
 |
mumuri
Franc-Maçon
enregistré depuis : oct. 2005
Messages : 639
dernière visite: 04.07.08
|
te méprend, je sais bien que c'est pas compliqué, mais pour avoir pas mal bidouilé le code ma 0.7, je préfere éviter de toucher à quoi que ce soit, je comprends bien que la méthode que tu proposes est la meilleur pour faire çà, (si tu regarde le feature request sur la noc, tu verras qu'une demande a été posté il y a quelques heures :))
|
| 22.04.2008, 17:21 |
|
 |
domo
Bisu
enregistré depuis : oct. 2005
Messages : 25
dernière visite: 22.04.08
|
Juste une proposition, pourquoi ne pas prendre le problème a l'envers et utiliser la fonction "capitalize" de smarty dans les template pour afficher la première lettre du login en majuscule?
http://www.smarty.net/manual/fr/lan...fier.capitalize
|
| 22.04.2008, 17:52 |
|
 |
Chestnut
Grand Maître
enregistré depuis : mar. 2005
Messages : 1125
dernière visite: 13.06.08
|
domo a écrit :
Je suis du même avis... cela relève plus d'une intention esthétique de la part de l'admin que de l'utilisateur et donc relève de l'affichage en general (templates), non d'une fonction ayant pour but de forcer le choix d'un utilisateur qui voudrait que son pseudo commence par une minuscule. (Pas que je désapprouve l'idée nécessairement toutefois).
Fais un bout de temps que je n'ai pas regardé mais si admin et Admin donne le même résultat sur l'identification, c'est que la requête utilise UPPER pour la comparaison si je me souviens bien.
En passant mumu, si tu veux ton premier "m" en majuscule, je peux t'arranger ça
Chestnut !
Administrateur
Aucun Support par message privé...
Même en cas de pensée suicidaire !
Règles à suivre
|
| 22.04.2008, 18:03 |
|
 |
mumuri
Franc-Maçon
enregistré depuis : oct. 2005
Messages : 639
dernière visite: 04.07.08
|
pour vous répondre, ...
parce qu'il faut se taper les modifs dans tous les templates de tous les modules ^^, et que quand on passe pnforum 2.6 à 2.7 on le sent passer
et pour faire plus joli, dans la mesure ou on nous autorise à faire de la validation sur les champs optionnelles à l'inscription (voir module Profil), je vois pas pourquoi on pourrait pas le faire aussi sur les champs obligatoires via un truc dans le genre [A-Z][A-Za-z0-9]
pour le pseudo, çà ira merci ^^,
modifié par : mumuri, 22 Avr 2008 - 18:10
|
| 22.04.2008, 18:07 |
|
 |
Chestnut
Grand Maître
enregistré depuis : mar. 2005
Messages : 1125
dernière visite: 13.06.08
|
mumuri a écrit : pour vous répondre, ...
parce qu'il faut se taper les modifs dans tous les templates de tous les modules ^^, et que quand on passe pnforum 2.6 à 2.7 on le sent passer
pour le pseudo, çà ira merci ^^,
Dans ce cas, vaudrait peut-être y aller moins drastique en changeant pnUserGetVar pour mettre en majuscule la première lettre du pseudo. Sinon, on force un choix de l'admin, non de l'utilisateur. Se faisant, on ne change pas la méthode d'identification puisqu'elle vient avant (au cas où la comparaison devenait... "case-sensitive") mais on obtient le résultat voulu sans toucher au templates ni à l'information inscrite dans la base de données.
Chestnut !
Administrateur
Aucun Support par message privé...
Même en cas de pensée suicidaire !
Règles à suivre
|
| 22.04.2008, 18:12 |
|
 |
mumuri
Franc-Maçon
enregistré depuis : oct. 2005
Messages : 639
dernière visite: 04.07.08
|
juste une question rapport à çà si on redéfini un smarty pnUserGetVar dans le theme , est ce qu'il override le pnUserGetVar classique ?
EDIT: à priori non
je confirme que çà marche sur la dernière version du svn
pour la partie validation des "optionnal items" (nom réels etc ...)
http://noc.postnuke.com/tracker/ind...p_id=5&atid=103
modifié par : mumuri, 22 Avr 2008 - 22:39
|
| 22.04.2008, 19:04 |
|
 |
YokaV
Grand Maître
enregistré depuis : déc. 2005
Messages : 600
dernière visite: 20.06.08
|
mumuri a écrit :
Génial ça, voici enfin un moyen de rendre ce champ "Validation" utile! C'est un peu comme le champ qui est juste au-dessus "Note" je me demande à quoi il peu bien servir! Je vais tester ça de suite...
-------------------------------------------
...n'oubliez pas que l'outil Recherche est votre ami !
...bien souvent il répond à nos questions avant même que l'on ne se les pose ! ^^
|
| 23.04.2008, 10:19 |
|
 |
YokaV
Grand Maître
enregistré depuis : déc. 2005
Messages : 600
dernière visite: 20.06.08
|
mumuri a écrit :
Ça fonctionne bien avec les éléments qui sont requis, mais pour les optionnels ça ne fonctionne pas.
-------------------------------------------
...n'oubliez pas que l'outil Recherche est votre ami !
...bien souvent il répond à nos questions avant même que l'on ne se les pose ! ^^
|
| 23.04.2008, 11:49 |
|
 |
mumuri
Franc-Maçon
enregistré depuis : oct. 2005
Messages : 639
dernière visite: 04.07.08
|
voir
http://noc.postnuke.com/tracker/dow...1/pnuserapi.php
merci
modifié par : mumuri, 23 Avr 2008 - 19:04
|
| 23.04.2008, 13:22 |
|
 |
YokaV
Grand Maître
enregistré depuis : déc. 2005
Messages : 600
dernière visite: 20.06.08
|
Ce dernier code ne va pas, tu oublies le _PASSWORD.
J'ai l'une ou l'autre remarque, pourquoi mettre une expression régulière /(.*)/ pour un champs qui n'en a pas, si pas d'expression régulière pas de test.
- $validationRule[0]!='/' && $validationRule[0]!='#'
sera toujours faut, d'ailleurs pourquoi tester la présence de # ? une expression régulière doit commencer par /^ et non par #...
Enfin je te propose une autre façon de voir les choses et que je préfère mais malheureusement je n'arrive toujours pas à faire fonctionner la validation sur les champs optionnels.
- function Profile_userapi_checkrequired($args)
- {
- // Argument check
- if (!isset($args['dynadata'])) {
- return LogUtil::registerError (_MODARGSERROR);
- }
-
- // The API function is called.
- $items = pnModAPIFunc('Profile', 'user', 'getallactive',
- array());
-
- // Initializing Error check
- $error = false;
- pnModLangLoad('Profile', 'user');
-
- foreach($items as $item) {
-
- // add Validation Rule loading
- $validationRule = $item['prop_validation'];
- $validationRuleTest = true;
-
- if (!isset($validationRule) || is_null($validationRule) || trim($validationRule)==""){
- $validationRuleTest = false;
- }
-
- if ($validationRule[0]!='/' || $validationRule[0]!='#'){
- $validationRule = "/^".$validationRule."$/";
- }
-
- if ($item['prop_label'] != '_PASSWORD') {
- if (is_array($args['dynadata'][$item['prop_label']])) {
- while(list(,$value) = each($args['dynadata'][$item['prop_label']])) {
- if ((_ProfileIsEmptyValue($value)) && ($item['prop_required'] == 1)) {
- $error['result'] = true;
- $error['fields'][] = $item['prop_label'];
- $error['translatedFields'][] = constant($item['prop_label']);
- }
-
- // add validation check
- if ($validationRuleTest && !preg_match($validationRule, $value)) {
- $error['result'] = true;
- $error['fields'][] = $item['prop_label'];
- $error['translatedFields'][] = constant($item['prop_label']);
- }
- }
- } else {
- if ((_ProfileIsEmptyValue($args['dynadata'][$item['prop_label']])) && ($item['prop_required'] == 1)) {
- $error['result'] = true;
- $error['fields'][] = $item['prop_label'];
- $error['translatedFields'][] = constant($item['prop_label']);
- }
-
- // add validation check
- if ($validationRuleTest && !preg_match($validationRule, $args['dynadata'][$item['prop_label']])) {
- $error['result'] = true;
- $error['fields'][] = $item['prop_label'];
- $error['translatedFields'][] = constant($item['prop_label']);
- }
- }
- }
- }
-
- if (!empty($error))
- $error['translatedFieldsStr'] = join(', ', $error['translatedFields']);
-
- // Return the result
- return $error;
- }
-------------------------------------------
...n'oubliez pas que l'outil Recherche est votre ami !
...bien souvent il répond à nos questions avant même que l'on ne se les pose ! ^^
|
| 23.04.2008, 13:35 |
|
 |
mumuri
Franc-Maçon
enregistré depuis : oct. 2005
Messages : 639
dernière visite: 04.07.08
|
pourquoi ne pourrait t'on pas faire de validation sur un pass , ca pourrait permettre de forcer les gens à utiliser plusieurs type de caractéres ?
pour /(.*)/ , c'est une expression complètement permissive, donc pas de souci (pour moi c'est du détail, car le test n'est effectué qu'une fois à l'inscription)
pour le second check, pregmatch permet des expressions commenant par des # (voir commentaire)
http://fr3.php.net/preg_match
autrement dit le
- if ($validationRule[0]!='/' && $validationRule[0]!='#'){
est ok :)
le champs note pourrai servir à afficher un message d'erreur en cas de problème de validation !
modifié par : mumuri, 24 Avr 2008 - 13:50
|
| 23.04.2008, 13:54 |
|
 |