GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Oxykaz le 11 Mai 2014, 22:25:01

Titre: Problème avec le systeme d'enregistrement/login en y_ini.
Posté par: Oxykaz le 11 Mai 2014, 22:25:01
Hello tous le monde,

Donc je vais aller directement dans le vive du sujet.

Donc c'est très simple j'ai pris un système de login/register en y_ini et le problème c'est que quand je me connecte après avoir créer mon compte, je peut entrer n'importe quel mot de passe il me dit qu'il est valide. J'ai chercher une solution mais rien je fait donc appel à vous. Et je n'arrive pas non plus a désactiver le cryptage du mdp. Voila j'espère que vous pourrait m'aide je vous laisse le script en entier pour que vous visualiser bien le problème. Merci d'avance.

http://pastebin.com/xHxRtsat (http://pastebin.com/xHxRtsat)

Edit (NV) : J'ai modifié ton lien, tu l'avais mal collé :wink:
Titre: Re : Problème avec le systeme d'enregistrement/login en y_ini.
Posté par: Pirhotau le 11 Mai 2014, 23:07:20
Salut!
Pour le cryptage, je pense qu'il faut regarder du côté de la fonction WP_Hash. Tu la supprime:

Code: (pawn) [Sélectionner]

// ligne 146
new HashPass[129];
WP_Hash(HashPass, sizeof(HashPass), inputtext);
INI_WriteString(File, "Password", HashPass);

// à remplacer par:
 INI_WriteString(File, "Password", inputtext);

et tu fais de même pour les autres endroits où ça apparait.
Titre: Re : Problème avec le systeme d'enregistrement/login en y_ini.
Posté par: Ssk le 11 Mai 2014, 23:09:10
Salut, le problème vient du fait que tu utilise des entiers pour stocker ton Hash, alors que la fonction WP_Hash travail sur des chaine de caractères.

Ton 'pPass', se doit d'être une chaine de caractère.
Ainsi, ton INI_Int("Password",PlayerInfo[playerid][pPass]); doit être modifié pour lire une chaine de caractères, etc ...
Titre: Re : Re : Problème avec le systeme d'enregistrement/login en y_ini.
Posté par: Oxykaz le 12 Mai 2014, 00:34:03
Salut!
Pour le cryptage, je pense qu'il faut regarder du côté de la fonction WP_Hash. Tu la supprime:

Code: (pawn) [Sélectionner]

// ligne 146
new HashPass[129];
WP_Hash(HashPass, sizeof(HashPass), inputtext);
INI_WriteString(File, "Password", HashPass);

// à remplacer par:
 INI_WriteString(File, "Password", inputtext);

et tu fais de même pour les autres endroits où ça apparait.

A oui exacte je n'avait pas penser.

Salut, le problème vient du fait que tu utilise des entiers pour stocker ton Hash, alors que la fonction WP_Hash travail sur des chaine de caractères.

Ton 'pPass', se doit d'être une chaine de caractère.
Ainsi, ton INI_Int("Password",PlayerInfo[playerid][pPass]); doit être modifié pour lire une chaine de caractères, etc ...

Euh je ne script pas très bien pourrait tu être plus claire s'il te plait? Merci.
Titre: Re : Problème avec le systeme d'enregistrement/login en y_ini.
Posté par: Pirhotau le 12 Mai 2014, 00:54:28
Ligne 16, dans ton enum, tu as:
Code: (pawn) [Sélectionner]
enum
{
     pPass,
     ...
}
En fait, tel qu'est défini la variable "pPass", c'est un nombre entier, or un mot de passe est une chaine de caractères. Il faudrait donc définir pPass[30] (30 étant la longueur max du mot de passe). Cependant, j'ai jamais testé la création d'ume chaine de caractères au sein d'un array, et je doute que ça marche. Si ça ne marche pas tu peux essayer de creer un nouvel array ne contenant que les mots de passe:
Code: (pawn) [Sélectionner]
MotsDePasse[MAX_PLAYERS][30]; À tester aussi...
Utilisation:
Code: (pawn) [Sélectionner]
INI_int("Password",MotsDePasse[playerid]);
Titre: Re : Problème avec le systeme d'enregistrement/login en y_ini.
Posté par: Oxykaz le 12 Mai 2014, 01:32:57
Ligne 16, dans ton enum, tu as:
Code: (pawn) [Sélectionner]
enum
{
     pPass,
     ...
}
En fait, tel qu'est défini la variable "pPass", c'est un nombre entier, or un mot de passe est une chaine de caractères. Il faudrait donc définir pPass[30] (30 étant la longueur max du mot de passe). Cependant, j'ai jamais testé la création d'ume chaine de caractères au sein d'un array, et je doute que ça marche. Si ça ne marche pas tu peux essayer de creer un nouvel array ne contenant que les mots de passe:
Code: (pawn) [Sélectionner]
MotsDePasse[MAX_PLAYERS][30]; À tester aussi...
Utilisation:
Code: (pawn) [Sélectionner]
INI_int("Password",MotsDePasse[playerid]);

Sa ne fonctionne pas.
Titre: Re : Problème avec le systeme d'enregistrement/login en y_ini.
Posté par: Pirhotau le 12 Mai 2014, 07:33:43
Salut!
Lorsque tu dis que ça ne fonctionne pas, qu'est ce qui ne marche pas? Tu as ton problème de d'habitude? Ou alors ça plante lors de la compilations (quelles sont les erreurs alors) ou dans le jeu?

J'avais une autre idée, mais elle n'est finalement pas réalisable...
Titre: Re : Re : Problème avec le systeme d'enregistrement/login en y_ini.
Posté par: Oxykaz le 12 Mai 2014, 12:36:56
Salut!
Lorsque tu dis que ça ne fonctionne pas, qu'est ce qui ne marche pas? Tu as ton problème de d'habitude? Ou alors ça plante lors de la compilations (quelles sont les erreurs alors) ou dans le jeu?

J'avais une autre idée, mais elle n'est finalement pas réalisable...

La même que d'habitude.
Titre: Re : Problème avec le systeme d'enregistrement/login en y_ini.
Posté par: Ssk le 12 Mai 2014, 12:42:56
Salut, ton code de base était bon, il n'y a rien à changer, autre de ce que je t'ai dit de changer.
Ton système de hash tu dois le garder pour éviter d'avoir des mots de passe en clair.

Ensuite, connais tu la différence entre une chaine de caractère et un integer ?

Si tu ne connais pas la différence je pourrai te l'expliquer tu comprendra déjà ton problème ;)
Titre: Re : Re : Problème avec le systeme d'enregistrement/login en y_ini.
Posté par: Oxykaz le 12 Mai 2014, 12:51:01
Salut, ton code de base était bon, il n'y a rien à changer, autre de ce que je t'ai dit de changer.
Ton système de hash tu dois le garder pour éviter d'avoir des mots de passe en clair.

Ensuite, connais tu la différence entre une chaine de caractère et un integer ?

Si tu ne connais pas la différence je pourrai te l'expliquer tu comprendra déjà ton problème ;)

Salut, et non je ne connais vraiment rien niveau chaine ect je commence le pawno.
Titre: Re : Problème avec le systeme d'enregistrement/login en y_ini.
Posté par: Ssk le 12 Mai 2014, 13:29:33
Alors un integer c'est une variable basique, elle ne peut contenir que des nombres et une chaine contient des lettres, si on veut.


Par exemple, pour créer un integer, on fait comme cela :
Code: (pawn) [Sélectionner]
new var;
Par contre pour créer une chaine de 19 caractères, on fait comme cela :
Code: (pawn) [Sélectionner]
new var[20];
Même si j'ai mis 20 entre crochet, cette chaine ne peut contenir que 19 caractères, c'est une règle.


Or, ton hash du mot de passe est une chaine, tu l'enregistre bien en tant que chaine à l'inscription.
Par contre à la lecture du fichier .ini, tu lis le hash comme si c'était un integer.
Titre: Re : Problème avec le systeme d'enregistrement/login en y_ini.
Posté par: Oxykaz le 12 Mai 2014, 20:26:57
Ok merci mais toujours rien je ne comprend pas. Avez vous un tutoriel s'il vous plait car se qui son sur le forum on le même probleme.
Titre: Re : Problème avec le systeme d'enregistrement/login en y_ini.
Posté par: Infu le 12 Mai 2014, 21:11:33
http://forum.sa-mp.com/showthread.php?p=1138420

Citer
INI_Integer
Tu as compris là?  :smile: