Bonjour à tous !
J'ai un problème pour naviguer dans mon arbre XML, je pense que je ne dois pas bien comprendre l'architecture du XML, je creuse le sujet depuis un moment.
J'ai un fichier XML qui contient une liste d'utilisateur autorisé pour mon site. L'objectif est d'aller parser ce fichier pour vérifier que les logins et mot de passe sont bon.
Voici un extrait du fichier XML :
Et voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 <users> <user> <nom>DUPONT1</nom> <prenom>Alfred</prenom> <login>adupont1</login> <mot_de_passe>toto</mot_de_passe> <profil>1</profil> </user> <user> <nom>DUPONT2</nom> <prenom>Vincent</prenom> <login>vdupont2</login> <mot_de_passe>titi</mot_de_passe> <profil>5</profil> </user> <user> <nom>DUPONT3</nom> <prenom>Stephane</prenom> <login>sdupont3</login> <mot_de_passe>tata</mot_de_passe> <profil>4</profil> </user> </users>
Lorsque je parcours mon arbre, je passe bien l'identification du login, par contre, lorsque je veux récupérer le noeud frère, donc le mot de passe, je n'obtiens rien, la variable est vide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 // Recuperation des informations de connexions $login = $_POST['inp_login']; $mot_de_passe = $_POST['inp_password']; // Recuperation du tableau d'acces (utilisateurs.xml) $fichierxml = new DOMDocument(); $fichierxml->load("config/utilisateurs.xml"); //Parsing du fichier xml $utilisateurs = $fichierxml->getElementsByTagName("user"); foreach($utilisateurs as $utilisateur) { $login_lu = ''; $mot_de_passe_lu = ''; foreach($utilisateur->childNodes as $child) { if($child->nodeType != XML_ELEMENT_NODE) continue; echo utf8_decode($child->firstChild->nodeValue)."<br>"; if($child->tagName == 'login') { $login_lu = utf8_decode($child->firstChild->nodeValue); if($login_lu == $login) { echo "Login trouvee ! <br>"; echo "Examen du mot de passe <br>"; $mot_de_passe_lu = utf8_decode($child->nextSibling->nodeValue); echo "Mot de passe lu = ".$mot_de_passe_lu."<br>"; if($mot_de_passe_lu == $mot_de_passe) { echo "Acces autorisee"; break; } else { echo "Acces refusee <br>"; break; } } } echo "Parcours de l'arbre<br>"; } }
J'ai également essayé de cette façon :
Mais sans succès également. Je ne comprends pas vraiment ou est l'erreur, a moins que je n'ai pas compris la notion de nœud frères. Quelqu'un pourrait il m'éclairer ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $child->nextSibling; $mot_de_passe_lu = utf8_decode($child->firstChild->nodeValue);
Partager