Construire un tableau associatif avec un fichier externe
phsautreau
Messages postés40Date d'inscriptionlundi 13 février 2012StatutMembreDernière intervention18 avril 2014
-
3 avril 2008 à 19:02
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 2010
-
5 avril 2008 à 00:10
Bonsoir,
Voilaà j'ai un fichier texte externe nommé identif_ens.txt et contenant
les login et mots de passe permettant de se logguer à une page, ce
fichier a la forme :
azerty;123456
toto;titi25
Par ailleurs pour tester la validité du login j'ai développé un script
qui teste si le champs login de mon formulaire d'accès et le champs
pass sont correct. Pour cela j'envisage de lire à l'ntrée dans le
script le fichier identif_ens.txt, de construire un tableau associatif
$tab et ensuite d'effectuer un test tel que :
si (strcmp($tab[$login], $pass) ==0) alors l'accès est possible
Voici le code entier :
$tab = array ();
// lecture du fichier contenat les identifications et construction du tableau interne
$fic = fopen("identif_ens.txt","r");
do{
$ligne = fgets($fic, 4096);
$element = explode (";",$ligne);
$id = $element[0]; echo $id."=".$element[0];
$p = $element[1]; echo $p."=".$element[1]."
";
$tab["$id"] = $p; // Mon problème réside sur cette ligne voir plus bas
La ligne que j'ai commenté en rouge : refuse de me construire l'élément de tableau associatif.
La ligne echo implanté en dessous pour vérification de l'implémentation me retourne même : ph51cn08 = ph51cn08 c'est à dire deux fois $p de passé en paramètre.
Dès lors comment puis-je faire pour que cette boucle me génère une association valide ?
foreach ($tab_1d as $l=>$u){
$e=explode(';', $u);
$tab_2d[$e[0]]=str_replace("\n", '', $e[1]);
}
un print_r($tab_2d) te permet de verifier le contenu du tableau.
/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
phsautreau
Messages postés40Date d'inscriptionlundi 13 février 2012StatutMembreDernière intervention18 avril 2014 4 avril 2008 à 16:02
Bonjour,
Et merci pour votre solution, toutefois si le tableau se construit bien, il n'en reste pas moins que lorsque je rentre un login et un mot de passe corrects (par exemple azerty et 123456) cf. plus haut mon script me retourne :
login et password incorrect
Y aurai-t-il une mauvaise interprétation de strcmp($tab[$login], $pass) == 0?
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 4 avril 2008 à 18:59
Hello,
tu as utilisé le code de Coucou ? Parce qu'il fait un truc que tu oublies, il vire le retour chariot de fin de ligne.
Ensuite, pourquoi utiliser strcmp() quand une simple comparaison suffit (!==) ?
phsautreau
Messages postés40Date d'inscriptionlundi 13 février 2012StatutMembreDernière intervention18 avril 2014 4 avril 2008 à 23:31
Bonsoir,
Pour répondre à ta question, j'ai bien utilisé le code de coucou747.
Quand à l'utilisation de strcmp plutôt que !==, cela viens d'une habitude qu'un de mes profs d'info m'avait donné il y a une dizaine d'année et qui était : quand on traite des chaînes de caractères on utilise des fonctions chaîne de caractères.
Ph. Sautreau
Vous n’avez pas trouvé la réponse que vous recherchez ?
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 4 avril 2008 à 23:47
Alors il n'y a aucune raison que ça ne marche pas.
Essaye donc d'afficher tes deux variables entre des délimiteurs (# par exemple), pour voir si aucun caractère n'est venu s'interposer.
Pour strcmp(), il ne faut pas toujours écouter ses vieux profs... "toujours" dans son sens le plus temporel ;-). Les langages évoluent. Et pire, ils n'ont pas tjrs raison.