controles sur le pseudo à la création d'un perso

Avatar de l’utilisateur
TonyFlow
Messages : 985
Inscription : 02 mai 2007, 09:26
Localisation : Normandie / Pierre-Blanche
Contact :

controles sur le pseudo à la création d'un perso

Message par TonyFlow »

Dans l'interface de création d'un nouveau perso, au niveau de la fenêtre de saisie du pseudo, les controles d'erreurs sont bof bof (mais ça n'a rien de bloquant) :
  • en essayant de taper un é, è, ç, à, caractère refusé avec le message "Tu as tapé un caractère illégal", jusque là tout va bien
  • en essayant tout autre caractère non alphanumérique, il est bien refusé mais avec ce message "Tu peux avoir maximum 2 chiffres dans ton nom"
  • à coté de ça, je peux mettre des chiffres en utilisant le clavier numérique, ils sont acceptés - du moins tant que je n'en mets que deux - après j'ai droit au même message que précédement, qui cette fois est logique
  • par contre au moment de valider un pseudo, il est refusé s'il contient le moindre chiffre... alors si aucun n'est autorisé, le test précédent pourrait être revu pour empêcher toute saisie de chiffre
Finalement, le seul message d'erreur sur le nombre de chiffres est inutile, dans tous les cas, un é,è,ç,à ou un (,),*,!... tout comme 1,2,3...devrait retourner le même message d'erreur "Tu as tapé un caractère illégal".

J'ose pas me lancer dans la correction de ce bug mineur, vu qu'il faudrait pouvoir tester sous différents OS ces histoires de touches (allez Trinita, vas-y champion ! ;) )
Just in case you never knew I miss you Slim, I love you too Oh! See my heart, it's black and blue When I die I will find you... My lovely man
But when you walk that walk and talk that talk You do it oh so well She's stone cold bush
Let me stand next to your Fire, my Pretty Little Ditty

Avatar de l’utilisateur
tosh
Messages : 2379
Inscription : 01 sept. 2007, 01:09
Localisation : Quelque part sur la planete Terre.

Re: controles sur le pseudo à la création d'un perso

Message par tosh »

En regardant vite fait le code, apparemment, la fonction à corriger est celle-ci :

Code : Tout sélectionner

//Returns 1 if it's valid, 0 if invalid and -1 if there's too many numbers in the name
int check_character(int type, char ch)
{
	int retval=0;

	if(type==0){
		//name
		if(isdigit(ch)){
			// no more then two digits in a name
			if (numbers_in_name >= 2)
			{
				retval=-1;
			} else {
				numbers_in_name++;
				retval=1;
			}
		} else if(isalnum(ch)||ch=='_'){
			retval=1;
		} else if ((ch>= 33 && ch<=47)||(ch>=58 && ch<=64)||(ch>=91&&ch<=96)||(ch>=122 && ch<=126)){
			// not permitted in a name
			retval=-1;
		}
	} else {	// password
		if(ch>=33 && ch<126) retval=1;
	}

	return retval;
}
En utilisant les fonctions de ctype.h, il y a moyen de faire quelque chose qui passe sur tous les OS (même Windows! :D )

Voici une correction non testée :

Code : Tout sélectionner

//Returns 1 if it's valid, 0 if invalid and -1 if there's too many numbers in the name
int check_character(int type, char ch)
{
	int retval=0;

	if(type==0){
		//name
#ifndef ENGLISH		
		//@tosh : seul les caractères alphabétiques et _ sont autorisés dans le pseudo
		if(isalpha(ch) || ch=='_')
			retval=1;
#else //ENGLISH			
		if(isdigit(ch)){
			// no more then two digits in a name
			if (numbers_in_name >= 2)
			{
				retval=-1;
			} else {
				numbers_in_name++;
				retval=1;
			}
		} else if(isalnum(ch)||ch=='_'){
			retval=1;				
		 }else if ((ch>= 33 && ch<=47)||(ch>=58 && ch<=64)||(ch>=91&&ch<=96)||(ch>=122 && ch<=126)){
			// not permitted in a name
			retval=-1;
		}
#endif //ENGLISH		
	} else {	// password
		if(ch>=33 && ch<126) retval=1;
	}

	return retval;
}
Guerrier dans l'âme.

Membre de l'équipe.
Développeur Client & Serveur.

Avatar de l’utilisateur
tosh
Messages : 2379
Inscription : 01 sept. 2007, 01:09
Localisation : Quelque part sur la planete Terre.

Re: controles sur le pseudo à la création d'un perso

Message par tosh »

Corrigé sur la révision 2363.
Guerrier dans l'âme.

Membre de l'équipe.
Développeur Client & Serveur.

Verrouillé