•  » Plugins
  •  » Insensible à la casse...

#151 2010-12-20 19:40:07

Whiler
Membre
Clichy
2004-12-24
189

Re: Insensible à la casse...

Eric a écrit:

C'est bizarre... Mes cas de figure pour les tests de sensibilité à la casse :
** 1 seul compte user test/pwd déjà créé - $conf['insensitive_case_logon'] = true - LCAS "Insensibilité à la casse" = False - LCAS "Insensibilité au accents" = False : Je peux me connecter avec test/pwd mais pas avec TEST/pwd, Test/pwd, etc...
** 1 seul compte user test/pwd déjà créé - $conf['insensitive_case_logon'] = true - LCAS "Insensibilité à la casse" = True - LCAS "Insensibilité au accents" = False : Je peux me connecter avec test/pwd, TEST/pwd, Test/pwd, etc...

Un seul compte.. avec un user qui possède des majuscules...
Il peut se connecter en respectant sa casse.. mais pas tout en minuscule...

J'l'ai "lowercasé" dans la base.. et effectivement, dans l'autre sens, cela fonctionne.

Dernière modification par Whiler (2010-12-20 19:41:15)

Hors ligne

#152 2010-12-20 20:47:51

LucMorizur
Membre
Vienne (Isère, 38)
2009-03-01
1969

Re: Insensible à la casse...

Bon ben moi ça commence moins bien :-/ ...: user Test1/1234 dans la base (ce n'est pas le seul compte, mais il n'y en a aucun dont seule la casse diffère), essayé tel quel : OK si $conf['insensitive_case_logon'] = true et options LCAS désactivées. Si l'insensibilité à la casse de LCAS est activé, Test1 ne fonctionne pas, même avec la bonne casse :-( ...

Hors ligne

#153 2010-12-20 20:49:15

Eric
Former Piwigo Team
VALENCE (FR)
2005-03-25
4579

Re: Insensible à la casse...

Alors le pb vient à nouveau de la fonction LCAS_change_case(). Je l'ai remplacée par ma fonction de contrôle de casse basée sur une requête LOWER et strtolower($username) et cela fonctionne bien comme cela.

Pour le cas où LCAS "Insensibilité à la casse" = True et LCAS "Insensibilité au accents" = False, on est bien sensé appeler LCAS_change_case($_POST['username'], 1), non ?!?

Hors ligne

#154 2010-12-20 20:53:30

LucMorizur
Membre
Vienne (Isère, 38)
2009-03-01
1969

Re: Insensible à la casse...

Eric a écrit:

Alors le pb vient à nouveau de la fonction LCAS_change_case(). Je l'ai remplacée par ma fonction de contrôle de casse basée sur une requête LOWER et strtolower($username) et cela fonctionne bien comme cela.

Pour le cas où LCAS "Insensibilité à la casse" = True et LCAS "Insensibilité au accents" = False, on est bien sensé appeler LCAS_change_case($_POST['username'], 1), non ?!?

Ben, oui, je crois bien.

Hors ligne

#155 2010-12-20 21:06:22

Eric
Former Piwigo Team
VALENCE (FR)
2005-03-25
4579

Re: Insensible à la casse...

Ok, c'est bien de l'usage de la fonction LCAS_change_case() qui n'est pas correct pour l'identification. En effet, elle va très bien pour construire le tableau des comptes à problème si on active les options de LCAS. Mais pour l'identification proprement dite, il faudrait la réécrire (nouvelle fonction dédiée) pour qu'elle retourne le login du user présent en base sans prendre en compte la casse et les accents.

J'ai loggé les variables au moment de l'identification pour un compte unique "Test" existant :

Avec un contrôle de casse simple issue de UAM v2.10.x (fonction LCAS_SearchCaseUsername()):

$conf_LCAS[0] = true

$conf_LCAS[1] = false

$_POST['username'] = Test

$new_username = LCAS_SearchCaseUsername($_POST['username']) -> Test

Avec LCAS_change_case():

$conf_LCAS[0] = true

$conf_LCAS[1] = false

$_POST['username'] = Test

$new_username = LCAS_SearchCaseUsername($_POST['username']) -> test

La variable $new_username affiche le strtolower du username saisi. Comme, en base de donnée, le username connu est "Test", l'identification ne peut pas se faire.

Hors ligne

#156 2010-12-20 21:19:18

LucMorizur
Membre
Vienne (Isère, 38)
2009-03-01
1969

Hors ligne

#157 2010-12-20 21:19:54

Eric
Former Piwigo Team
VALENCE (FR)
2005-03-25
4579

Re: Insensible à la casse...

J'ai corrigé ma méthode d'appel à la fonction LCAS_change_case() : [Subversion] r8206

Cela semble fonctionner mieux maintenant ;-)
Je teste avec des accents maintenant...

Hors ligne

#158 2010-12-20 21:29:39

Eric
Former Piwigo Team
VALENCE (FR)
2005-03-25
4579

Re: Insensible à la casse...

Eric a écrit:

Je teste avec des accents maintenant...

... Et çà ne fonctionne absolument pas. :-(

Ai-je bien tout compris (??):
- Si on a un user "Écho" déjà inscrit et si LCAS "Insensibilité à la casse" = False et LCAS "Insensibilité au accents" = True, alors il doit pouvoir s'identifier avec "Echo"
- Si on a un user "Écho" déjà inscrit et si LCAS "Insensibilité à la casse" = True et LCAS "Insensibilité au accents" = True, alors il doit pouvoir s'identifier avec "écho" et "Echo"

J'ai bon ?

Hors ligne

#159 2010-12-20 21:29:57

LucMorizur
Membre
Vienne (Isère, 38)
2009-03-01
1969

Re: Insensible à la casse...

Eric a écrit:

J'ai corrigé ma méthode d'appel à la fonction LCAS_change_case() : [Subversion] r8206

Cela semble fonctionner mieux maintenant ;-)

En effet ! Tjrs OK pour "Test1" avec test1, TEST1, tesT1 ...

:-)

Eric a écrit:

Je teste avec des accents maintenant...

Hélas :-( !

Toujours avec $conf['insensitive_case_logon'] = true - LCAS "Insensibilité à la casse" = True - LCAS "Insensibilité au accents" = False : "Privée_2" dans la base, essai Privée_2 : OK, essai privée_2 : NOK :-( ...

Je continue à réfléchir........

Hors ligne

#160 2010-12-20 21:31:21

LucMorizur
Membre
Vienne (Isère, 38)
2009-03-01
1969

Re: Insensible à la casse...

Eric a écrit:

Eric a écrit:

Je teste avec des accents maintenant...

... Et çà ne fonctionne absolument pas. :-(

Ai-je bien tout compris (??):
- Si on a un user "Écho" déjà inscrit et si LCAS "Insensibilité à la casse" = False et LCAS "Insensibilité au accents" = True, alors il doit pouvoir s'identifier avec "Echo"
- Si on a un user "Écho" déjà inscrit et si LCAS "Insensibilité à la casse" = True et LCAS "Insensibilité au accents" = True, alors il doit pouvoir s'identifier avec "écho" et "Echo"

J'ai bon ?

Je peux pas te répondre, j'ai plus d'aspirine |-( ....

Oui, c'est ça.

;-)

Hors ligne

#161 2010-12-20 21:43:18

Whiler
Membre
Clichy
2004-12-24
189

Re: Insensible à la casse...

J'ai jeté un très rapide coup d'oeil à la version que j'avais téléchargée plus tot dans la soirée...

si j'ai bien compris (et que cela n'a pas changé depuis)... le problème vient certainement de la casse des users enregistrés... si pas tout lower.. alors pas possible de se loguer....

il faut que la requête en sur la base soit du type lower(username) == '.LCAS_Change_Case($username).'

si c'est déjà le cas.. ben ignoré cette piste...

Hors ligne

#162 2010-12-20 21:49:23

Eric
Former Piwigo Team
VALENCE (FR)
2005-03-25
4579

Re: Insensible à la casse...

Autant avec le contrôle de casse c'est "facile", autant pour le contrôle des accents cela se corse. Et cela s'empire lorsqu'on cumule les deux options ! (toutes allusions à un empereur Corse sont tout à fait fortuites ^^).

En effet (écrire m'aide à réfléchir), si on ne contrôle *que* les accents, il faut rechercher en base de donnée le username correspondant quelque soit l'accentuation des lettres : écho = echo
Si on contrôle les accents *et* la casse, il faut rechercher en base de donnée le username correspondant quelque soit l'accentuation des lettres et quelque soit leur casse : écho = Écho = echo

A cela, il faut ajouter le fait que, pour l'instant, rien n'empêche un visiteur de s'inscrire avec un username = "écho" alors qu'il existe déjà un compte "Écho" (çà, c'est dans ma todo list)

Hors ligne

#163 2010-12-20 22:02:07

LucMorizur
Membre
Vienne (Isère, 38)
2009-03-01
1969

Re: Insensible à la casse...

Je propose de créer une table <pwg>_LCAS consituée de usernames (et de leur id, le même que dans <pwg>_users, bien sûr) construits à l'aide de LCAS_Change_Case($username). Ainsi on pourra comparer LCAS_Change_Case($username) lors de l'identification avec un username de DB construit en utilisant la même fonction.

Car pour le moment, on utilise LOWER de MySQL, je ne suis pas du tout sûr qu'il fonctionne de la même façon que LCAS_Change_Case .

Hors ligne

#164 2010-12-20 22:05:43

LucMorizur
Membre
Vienne (Isère, 38)
2009-03-01
1969

Re: Insensible à la casse...

Cette table serait construite (ou reconstruite) lorsque les options de LCAS seraient changées, et pourrait donc servir à établir une liste de usernames qui posent problème.

Hors ligne

#165 2010-12-20 22:20:26

Eric
Former Piwigo Team
VALENCE (FR)
2005-03-25
4579

Re: Insensible à la casse...

LucMorizur a écrit:

Je propose de créer une table <pwg>_LCAS consituée de usernames (et de leur id, le même que dans <pwg>_users, bien sûr) construits à l'aide de LCAS_Change_Case($username). Ainsi on pourra comparer LCAS_Change_Case($username) lors de l'identification avec un username de DB construit en utilisant la même fonction.

Car pour le moment, on utilise LOWER de MySQL, je ne suis pas du tout sûr qu'il fonctionne de la même façon que LCAS_Change_Case .

Oui, je pense que c'est une idée à creuser. De plus, LOWER est MySql. Pas certain que cette fonction existe en l'état pour PgSql ou Sqlite; ce qui réduit le champ de portée du plugin pour d'autres SGBD.

Mais les username construits avec LCAS_Change_Case($username, $rule), cela imposera que cette table comporte 4 champs car il faut tenir compte du paramètre $rule:
- ID
- username (insensible à la casse uniquement)
- username (insensible aux accents uniquement)
- username (insensible à la casse et aux accents)


Cette nouvelle table (appelons la #_LCAS_users) devra aussi se remplir au fur et à mesure des nouvelles inscriptions et pas seulement au moment de l'activation du plugin.

Dernière modification par Eric (2010-12-20 22:20:52)

Hors ligne

  •  » Plugins
  •  » Insensible à la casse...

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact