Problème: Double Pseudo (Sans Base de Donnée)
Résolu/Fermé7 réponses
benkeeper
Messages postés
81
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
26 janvier 2008
45
12 févr. 2007 à 13:57
12 févr. 2007 à 13:57
En gros tu souhaiterais tester si le pseudo existe déjà dans ton fichier ou non avant de l'y inscrire?
Ben
Ben
benkeeper
Messages postés
81
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
26 janvier 2008
45
12 févr. 2007 à 14:12
12 févr. 2007 à 14:12
Si le modèle de la ligne est le suivant :
NOM MOTDEPASSE EMAIL\n
La ligne
$morceaux = explode(" ", $indice);
implique que $morceaux[0] = NOM, $morceaux[1] = MOTDEPASSE et $morceaux[2] = EMAIL
Peut être que le problème vient de là.
Autrement, bien que j'ai conscience qu'il s'agit d'un script de test, il vaut mieux prendre pour habitude de ne pas utilise l'espace comme séparateur, pour éviter les erreurs si l'utilisateur entre un espace dans son nom. Personellement j'utiliserai le "pipe" |
ex : NOM|MOTDEPASSE|EMAIL\n
avec un test pour supprimer les pipes éventuellement entrés par l'utilisateur, de cette manière :
$membre = str_replace("|", "",$nom) ."|". str_replace("|", "",$motdepasse). "|" . str_replace("|", "",$email) ."|";
Je sais pas expérience qu'il vaut mieux prendre l'habitude de ces petits détails, y compris pour les tests :)
Ben
NOM MOTDEPASSE EMAIL\n
La ligne
$morceaux = explode(" ", $indice);
implique que $morceaux[0] = NOM, $morceaux[1] = MOTDEPASSE et $morceaux[2] = EMAIL
Peut être que le problème vient de là.
Autrement, bien que j'ai conscience qu'il s'agit d'un script de test, il vaut mieux prendre pour habitude de ne pas utilise l'espace comme séparateur, pour éviter les erreurs si l'utilisateur entre un espace dans son nom. Personellement j'utiliserai le "pipe" |
ex : NOM|MOTDEPASSE|EMAIL\n
avec un test pour supprimer les pipes éventuellement entrés par l'utilisateur, de cette manière :
$membre = str_replace("|", "",$nom) ."|". str_replace("|", "",$motdepasse). "|" . str_replace("|", "",$email) ."|";
Je sais pas expérience qu'il vaut mieux prendre l'habitude de ces petits détails, y compris pour les tests :)
Ben
Utilisateur anonyme
12 févr. 2007 à 14:19
12 févr. 2007 à 14:19
Merci, ça m'a réglé le problème des pseudos doubles. Mais, il y a toujours un, mais. ^^
Il me met cette fois-ci le message qu'il y a déjà un double Pseudo ou Email, le problème c'est que même s'il le marque il l'a quand même inscris dans le fichier texte.
Deuxième problème c'est que si j'entre, maintenant un pseudo corecte etc... Il me le met à double Oo
Il me met cette fois-ci le message qu'il y a déjà un double Pseudo ou Email, le problème c'est que même s'il le marque il l'a quand même inscris dans le fichier texte.
Deuxième problème c'est que si j'entre, maintenant un pseudo corecte etc... Il me le met à double Oo
Utilisateur anonyme
12 févr. 2007 à 15:19
12 févr. 2007 à 15:19
Est-ce que vous pouvez voir ou bien donner votre avis ou vos codes qui vous ont servis pour ce genre de problèmes ?
Le problème vient de la boucle "Foreach" mal placé? && ? || ? Je ne sais pas. :/
Le problème vient de la boucle "Foreach" mal placé? && ? || ? Je ne sais pas. :/
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
benkeeper
Messages postés
81
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
26 janvier 2008
45
12 févr. 2007 à 18:14
12 févr. 2007 à 18:14
Au niveau de votre test je pense qu'il y a un soucis.
Si j'avais à faire un tel script, je testerai d'abord le nouveau pseudo/email contre toutes les lignes du fichier avant de penser à l'inscrire dedans.
En gros :
$doublon = false;
foreach($contenu as $indice){
//Pour chaque ligne
$indice = rtrim($indice);
$morceaux = explode(" ", $indice);
//On teste si le pseudo ou email est équivalent
//Si oui, on passe la variable $doublon à true et on sort de la boucle
if($nom == $morceaux[0] || $email == $morceaux[2]) {
$doublon = true;
break;
}
//Si non, on continue à la ligne suivante
else continue;
}
//Ici on verifie si le pseudo/email a été trouvé dans le fichier
if($doublon){
//Insérer le code correspondant à la présence d'un doublon
}
else {
//on ajoute le pseudo/mot de passe au fichier
$fichier="../Identification/login.txt";
$fp = fopen($fichier, "a"); //j'ouvre en mode append qui place le pointeur à la fin
if($fp) fwrite($fp, $membre . "\n");
fclose($fp);
}
A noter que dans le cas de mon code, les doublons d'email seront interdits au même titre que les doublons de pseudo, à savoir qu'un même pseudo avec une adresse différente ne sera pas accepté et une même adresse avec un pseudo différent ne sera pas acceptée non plus.
Dites moi si ça vous convient :)
Ben
Si j'avais à faire un tel script, je testerai d'abord le nouveau pseudo/email contre toutes les lignes du fichier avant de penser à l'inscrire dedans.
En gros :
$doublon = false;
foreach($contenu as $indice){
//Pour chaque ligne
$indice = rtrim($indice);
$morceaux = explode(" ", $indice);
//On teste si le pseudo ou email est équivalent
//Si oui, on passe la variable $doublon à true et on sort de la boucle
if($nom == $morceaux[0] || $email == $morceaux[2]) {
$doublon = true;
break;
}
//Si non, on continue à la ligne suivante
else continue;
}
//Ici on verifie si le pseudo/email a été trouvé dans le fichier
if($doublon){
//Insérer le code correspondant à la présence d'un doublon
}
else {
//on ajoute le pseudo/mot de passe au fichier
$fichier="../Identification/login.txt";
$fp = fopen($fichier, "a"); //j'ouvre en mode append qui place le pointeur à la fin
if($fp) fwrite($fp, $membre . "\n");
fclose($fp);
}
A noter que dans le cas de mon code, les doublons d'email seront interdits au même titre que les doublons de pseudo, à savoir qu'un même pseudo avec une adresse différente ne sera pas accepté et une même adresse avec un pseudo différent ne sera pas acceptée non plus.
Dites moi si ça vous convient :)
Ben
Utilisateur anonyme
13 févr. 2007 à 06:23
13 févr. 2007 à 06:23
ça me convient tellement parfaitement que je n'arrive pas à décrire ma joie !
Je vous remercie infiniment ! Merci ! Merci !
Je vous remercie infiniment ! Merci ! Merci !
12 févr. 2007 à 13:59
12 févr. 2007 à 14:01
$morceaux[0] ( c'est le nom de 'lutilisateur dans mon fichier texte) et
$morceaux[2] (C'est le mot de passe dans mon fichier texte)