GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Kevin_Carter le 10 Avril 2013, 22:38:20

Titre: Problème connection
Posté par: Kevin_Carter le 10 Avril 2013, 22:38:20
Bonjour, Encore une fois, j'ai un problème durant la connection...
Lorsque j'entre mon mot de passe pour me connecter ça fonctionne. Très bien
Mais si j'entre n'importe quoi comme "Test12" je peux quand même entrer...
Voici le code : http://pastebin.com/q8Vt12Mb (http://pastebin.com/q8Vt12Mb)

J'espère que vous pourrez trouver l'erreur et je vous remercie d'avance ciao
Titre: Re : Problème connection
Posté par: rafffel le 10 Avril 2013, 23:20:35
http://wiki.sa-mp.com/wiki/Strcmp (http://wiki.sa-mp.com/wiki/Strcmp)

en note il est marque que si la string est vide la fonction peut retourner 0 vérifie ce que tu obtien de ton dini_Get
et que tu obtient bien le pass saisie dans ton inputtext

Titre: Re : Problème connection
Posté par: Kevin_Carter le 11 Avril 2013, 17:28:07
 :huh: C'est pourtant ce que fais strcmp() et je crois ne pas bien comprendre en fait...
Titre: Re : Problème connection
Posté par: rafffel le 11 Avril 2013, 17:39:02
oui strcomp compare bien mais ile st ecriten note qu'il est possible que la fonction retourne 0 si il y a une chaine de caractère vide.
donc vérifie que lors du strcmp ni le mot de passe saisie ni le mot de passe récuperé par le dini_get soit vide
Titre: Re : Problème connection
Posté par: Kevin_Carter le 19 Avril 2013, 22:39:21
Je ne comprends vraiment pas...
Titre: Re : Problème connection
Posté par: vincentdu90 le 20 Avril 2013, 02:37:15
En gros dans ton code il faut que tu ais :

Code: (Pawn) [Sélectionner]

print(inputtext);
print(pw);


Afin de vérifier si une des deux chaînes n'est pas vide.
Titre: Re : Problème connection
Posté par: S!m le 20 Avril 2013, 20:31:12
Salut,

on peut faire une nouvelle fonction dans ce genre qui contournerais ce problème:

#define TEXT_NULL_LEN (0xFFFFFFFF)
stock txtcmp(text1[], text2[], bool:ignorecase=false, length=cellmax)
{
return ((strlen(text1) == 0) || (strlen(text2) == 0)) ? TEXT_NULL_LEN:strcmp(text1, text2, ignorecase, length);
}

Fonction qui s'utilise de la même façon que strcmp.

Bonne chance

++Sim++
Titre: Re : Problème connection
Posté par: Kevin_Carter le 24 Avril 2013, 21:44:41
Merci de ta réponse, je ne comprends vraiment rien au Stock et tout ça là, mais j'ai fais un print pour les variables : Le pw retourne Null
Mais le inputtext retourne ce que j'ai entré

Comment puis-je régler ceci sans stock ?
Titre: Re : Problème connection
Posté par: Xolokos le 24 Avril 2013, 22:46:34
Juste a comparer que l'inputtext soit égal a le MDP...
Donc un strcmp juste a regarder le Wiki'.
Titre: Re : Re : Problème connection
Posté par: rafffel le 24 Avril 2013, 22:51:12
Juste a comparer que l'inputtext soit égal a le MDP...
Donc un strcmp juste a regarder le Wiki'.

Il l'utilise déjà le problème c'est que le pw récupere (celui qui est stocke dans la bdd)
et null et la fonction  strcmp peut renvoyer true si l'un des mots a comparer vaut null.

d'où la fonction introduite par s!m qui utilise strcmp mais qui corrige le problème de pw null
Titre: Re : Re : Problème connection
Posté par: vincentdu90 le 25 Avril 2013, 00:30:42
Merci de ta réponse, je ne comprends vraiment rien au Stock et tout ça là, mais j'ai fais un print pour les variables : Le pw retourne Null
Mais le inputtext retourne ce que j'ai entré

Comment puis-je régler ceci sans stock ?

Dans ce cas vérifie si les paramètres de ton Dini_Get() sont correctes (chemin, clé existante ou non ect..).
Titre: Re : Re : Re : Problème connection
Posté par: S!m le 25 Avril 2013, 06:59:34
Salut,

Merci de ta réponse, je ne comprends vraiment rien au Stock et tout ça là, mais j'ai fais un print pour les variables : Le pw retourne Null
Mais le inputtext retourne ce que j'ai entré

Comment puis-je régler ceci sans stock ?

Dans ce cas vérifie si les paramètres de ton Dini_Get() sont correctes (chemin, clé existante ou non ect..).

Même en corrigeant, il peut arriver qu'un mot de passe soit mal récupéré, que quelqu'un supprime un fichier accidentellement etc...

Il vaudrait mieux ajouter la protection concernant la longueur du mot de passe.

Pour utiliser la fonction que j'ai donné, il faut simplement la copier dans le script (j'aurais tendance à préférer à la fin) et remplacer strcmp par txtcmp aux endroits où l'on veut ajouter la vérification de la longueur.

À Noter que l'on peut utiliser préférablement cette fonction qui sera plus rapide:

//CODE À PLACER AU DÉBUT DE TON SCRIPT
#if !defined isnull
#define isnull(%1) \
((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
#endif
#define TEXT_NULL_LEN (0xFFFFFFFF)

//CODE À PLACER À LA FIN DE TON SCRIPT
stock txtcmp(text1[], text2[], bool:ignorecase=false, length=cellmax)
{
return (isnull(text1) || isnull(text2)) ? TEXT_NULL_LEN:strcmp(text1, text2, ignorecase, length);
}

Merci et bonne chance

++Sim++
Titre: Re : Problème connection
Posté par: vincentdu90 le 25 Avril 2013, 10:56:45
Oui évidemment mais je disais ça en vue de corriger son autre problème   :happy:.
Titre: Re : Problème connection
Posté par: Kevin_Carter le 26 Avril 2013, 15:16:42
Merci beaucoup S!m :)
Merci aux autres d'avoir passé du temps à essayer de m'aider. Merci.