• 04 Juin 2026, 11:49:11


Auteur Sujet: Soucis reconnaissance mdp  (Lu 2927 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Tetsuka

  • *
  • Criminel
  • Messages: 45
    • Voir le profil
Soucis reconnaissance mdp
« le: 11 Juin 2011, 23:44:09 »
Salut salut,
J'ai pas vraiment l'habitude de demander de l'aide, mais là je suis sur une tuile et je sèche.
J'ai du mal avec la reconnaissance du mot de passe, ici, peu importe le mot de passe qui est tapé dans la boite de dialogue, c'est considéré comme bon et le joueur peut se connecter...

public OnPlayerLoginAttempt( playerid, password[])
{
new string[ 128 ], Nom[MAX_PLAYER_NAME];
GetPlayerName( playerid, Nom, sizeof(Nom) );
format( string, sizeof( string ), "Comptes/%s.ini", Nom);
        if(fexist( string) )
{
               if(strcmp( dini_Get( string, "Password" ), password, false ) == 0)
      {
              etc...

Le dialogue en question:

case 3894:
{
if(strlen(inputtext) > 128 || strlen(inputtext) < 1)
{
ShowPlayerDialog( playerid, 3894, DIALOG_STYLE_INPUT, "Authentification", "Bienvenue sur le serveur\n\nEntre ton mot de passe pour te connecter", "Connexion", "Aide" );
}
else
{
if( Player[playerid][Authentif] == 0 )
{
OnPlayerLoginAttempt( playerid, inputtext);
}
else
{
SendClientMessage( playerid, GRIS, "Tu es déjà authentifié." );
}
}
}


J'ai esssayé pas mal de trucs en zieutant sur d'autres scripts, mais rien n'y fait.

Merci d'avance,
Tetsu

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Soucis reconnaissance mdp
« Réponse #1 le: 12 Juin 2011, 00:04:49 »
La fonction strcmp à un bug : Si une des chaînes est vide, elle se comporte comme si les deux chaînes étaient égales.

Donc dans un premier temps, il faut vérifier que tes chaînes de caractères ne sont pas vides.
Pour cela, il suffit de rajouter un printf juste avant la comparaison :
public OnPlayerLoginAttempt( playerid, password[])
{
new string[ 128 ], Nom[MAX_PLAYER_NAME];
GetPlayerName( playerid, Nom, sizeof(Nom) );
format( string, sizeof( string ), "Comptes/%s.ini", Nom);
        if(fexist( string) )
{
               printf ("---> strcmp (<%s>, <%s>)", dini_Get( string, "Password" ), password); // LIGNE A AJOUTER
               if(strcmp( dini_Get( string, "Password" ), password, false ) == 0)
      {
              etc...

Puis, on regarde dans la console du serveur si on n'a pas un affichage du genre
---> strcmp (<Toto>, <>)
ou
---> strcmp (<>, <Titi>)
NB : <> indique une chaîne vide

Ensuite, si c'est la cas, il te suffira de déterminer pourquoi la chaîne est vide.
NB : Il faut quand même gérer le cas où le joueur ne saisit pas de mot de passe.

++
Syg
Courtesy of GtaManiac

Hors ligne Tetsuka

  • *
  • Criminel
  • Messages: 45
    • Voir le profil
Re : Soucis reconnaissance mdp
« Réponse #2 le: 12 Juin 2011, 00:30:14 »
Salut Syg,
Merci pour ton coup de pouce, je vais voir ça.
Sinon, le cas où le joueur ne saisit pas de mot de passe est géré dans le dialog: if(strlen(inputtext) > 128 || strlen(inputtext) < 1)
(Si c'est bien de ça que tu parlais)


Double post
Voilà le résultat du test:
[00:33:15] ---> strcmp (<>, <test>)
J'ai donc un soucis avec la variable joueur...
Je me rend compte que, dans mon fichier joueur, à chaque fois que je me connecte, ce qui était "Password = ..." devient "ÿPassword = ..." Je pense que le soucis viens de là, mais aucune idée d'où ça peut venir...
« Modifié: 12 Juin 2011, 00:37:07 par Tetsuka »

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Soucis reconnaissance mdp
« Réponse #3 le: 12 Juin 2011, 08:28:21 »
dans un sens c'est normale

if(strcmp( dini_Get( string, "Password" ), password, false ) == 0)

ceci est bien trop long une fonction dans une fonction

new passfichier[256];
passfichier = dini_Get( string, "Password" );
if(strcmp( passfichier, password, false ) == 0)

voila qui devrais etre capable de lire le fichier

pour le soucis de Password a ÿPassword tu as du faire une erreure de frappe quelque part.
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne Tetsuka

  • *
  • Criminel
  • Messages: 45
    • Voir le profil
Re : Soucis reconnaissance mdp
« Réponse #4 le: 12 Juin 2011, 10:57:13 »
Salut Cristab, merci pour ton aide.
Le mot de passe n'est toujours pas récupéré, je suis persuadé que le soucis vient du ÿPassword.
Lorsque je me connecte, la ligne Password devient ÿPassword et à la déconnexion un nouvelle ligne Password apparait à la fin...
J'ai bien vérifié, je n'ai fait aucune erreur de frappe.

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Soucis reconnaissance mdp
« Réponse #5 le: 12 Juin 2011, 11:07:08 »
tu peu me montrer tout sa au moment de la connection ect ect
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Soucis reconnaissance mdp
« Réponse #6 le: 12 Juin 2011, 13:19:08 »
Le caractère ÿ correspond au code ASCII 255. Ce n'est certainement pas une coïncidence.
Je pense comme cristab, le fichier doit être mal écrit mais ça ne vient pas forcément de la ligne Password=, ça peut aussi venir de celle qui est juste au dessus.

++
Syg
Courtesy of GtaManiac

Hors ligne Tetsuka

  • *
  • Criminel
  • Messages: 45
    • Voir le profil
Re : Soucis reconnaissance mdp
« Réponse #7 le: 12 Juin 2011, 13:40:57 »
Voici un pastebin avec les 3 fonctions qui concernent le mot de passe.
http://pastebin.gtaonline.fr/pastebin.php?show=1105

Le Password est en première ligne sur tous les fichiers (sauf dans le cas où la nouvelle ligne se crée)
« Modifié: 12 Juin 2011, 13:42:52 par Tetsuka »

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Soucis reconnaissance mdp
« Réponse #8 le: 12 Juin 2011, 13:47:52 »
tu n'est pas obliger de sauver a chaque coup le password dans SavePlayerData tu l'enregistre dans le /register  et dans le /changepass mais c'est tout je rapelle que Dini est un peu long mais la tu fais des save un peu partout ce qui le rendras forcement instable
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Soucis reconnaissance mdp
« Réponse #9 le: 12 Juin 2011, 14:11:27 »
Salut,

il a l'air de ne sauvegarder qu'à la déconnexion...ce n'est pas si pire...
Normalement il faut que ça puisse sauvegarder correctement...

Si tu fais un print du string avant de l'enregistrer, es-ce que ça t'affiche le mot de passe correctement?

++Sim++





Hors ligne Tetsuka

  • *
  • Criminel
  • Messages: 45
    • Voir le profil
Re : Soucis reconnaissance mdp
« Réponse #10 le: 12 Juin 2011, 15:10:52 »
Salut,

Donc, si je suis vos conseils:
-Je supprime l'enregistrement du mot de passe dans le SavePlayerData pour ne le garder qu'à l'enregistrement/changement
-Je fais en sorte que les stats soient sauvegardées de manière récurrente? En sachant que j'ai quand même fait en sorte d'appeler souvent cette fonction.
C'est bien ça?

Sim, voici le résultat du printf: [15:07:24] ---> strcmp (<test>, <test>) Ca a donc l'air de bien fonctionner..


Double post
Bon, je me suis rendu compte que le problème n'est pas général.
Avec tous les autres comptes que j'ai crée/testé tout fonctionne nickel, sauf avec un seul et le soucis du ÿPassword... Une idée?
« Modifié: 13 Juin 2011, 12:52:22 par Tetsuka »

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Soucis reconnaissance mdp
« Réponse #11 le: 13 Juin 2011, 13:21:31 »
Corrige le fichier du joueur qui pose problème à la main (supprime le ÿ) et regarde si le problème est toujours là.
Si il est toujours là ... il faudra investiguer plus en profondeur..

++
Syg
Courtesy of GtaManiac

Hors ligne Tetsuka

  • *
  • Criminel
  • Messages: 45
    • Voir le profil
Re : Soucis reconnaissance mdp
« Réponse #12 le: 13 Juin 2011, 13:56:09 »
Déjà fait, le ÿ réapparait à chaque fois.

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Soucis reconnaissance mdp
« Réponse #13 le: 13 Juin 2011, 14:04:53 »
efface le fichier en question est demande au joueur de le recreer
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne Tetsuka

  • *
  • Criminel
  • Messages: 45
    • Voir le profil
Re : Soucis reconnaissance mdp
« Réponse #14 le: 13 Juin 2011, 14:30:00 »
C'est la seule solution je crois oui, mais c'est dommage de pas trouver l'origine de ce bug, car si ça se reproduit, ça peut devenir embêtant.
Merci pour votre aide, je vous tiens au courant.