Page 1 sur 1

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

Publié : 20 avr. 2010, 22:10
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 ! ;) )

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

Publié : 22 avr. 2010, 16:10
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;
}

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

Publié : 26 avr. 2010, 17:39
par tosh
Corrigé sur la révision 2363.