Bonjour,
au départ, je pensais à un titre de discussion "bug de variable de session", ce qui aurait été plus accrocheur, mais m'aurait attiré des foudres, vu que le problème est certainement du à mon code et non à la variable de session...
Bref, dans ma page initiale, j'affiche une liste d'erreurs et l'utilisateur a la possibilité d'afficher davantage de détails en cliquant sur un bouton "details" (et de ce fait, aller sur un fichier Details.php). Comme ces détails sont élaborés dans la page initiale et qu'il faut les transmettre au fichier Details.php, comme les détails sont dans une variable de type array, je les transmets via une variable de session. A priori, dans cette variable, j'y mets les données relatives à l'erreur sélectionnée, mais en fait, quelque soit cette erreur, dans la variable de session, on y trouve systématiquement les données relatives à la dernière erreur. Il y a donc vraisemblablement un bug chez moi, mais je ne le trouve pas. Merci pour l'aide.
Page initiale :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 $nb_line = 0; foreach($result as $errorname => $line) { echo $errorname; echo '<br/><br/>'; echo "line:",$nb_line++."<br/>"; var_dump($line);echo '<br/><br/>'; $_SESSION['result'] = $line; ?> <a href = "?action=Details&debug=false" target="_blank"> (details) </a> <br/> <?php }
Details.php :
Le var_dump de la ligne 6 de la page initiale montre que les données sont correctes avant transmission ; par contre, une fois dans le fichier Details.php, la variable de session, copiée dans la variable $result contient systématiquement les données relatives à la dernière erreur. Pourquoi ?
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 class Details { public function invoke(array $data = []) { $result = $_SESSION['result']; foreach($result as $one_result) echo $one_result['appliname']." ".$one_result['sesaid']."<br/>"; echo '<br/>'; ?> <a href="#" onclick="window.close()">Close the windows</a> <?php } }
NB : le lien <a href = "?action=Details... va en fait sur le fichier index.php et le routeur placé dans ce fichier va appeler la méthode invokedu fichier Details.php.
Partager