Bonjour,
J'ai regardé sur plusieurs forum, mais bien qu'ayant noté plusieurs soucis mentionnés ressemblant au mien, aucune solution n'a marché. Je vous soumets donc mon petit problème (sur lequel je suis depuis deux jours et qui menace de me rendre dingue, soyons honnête), au cas où vous auriez une idée . Je précise que ce souci ne se pose que quand je transferts mon site sur mon hébergeur, et pas du tout en local où tout fonctionne à merveille (comme d'habitude, pourquoi faire simple ...)
Je créé donc un site php et je rencontre des soucis de session : la même session est conservée au fil des redirections/authentification, mais son contenu est 'vidé' quand j'utilise un lien.
Je détaille :
J'utilise une page index.php dans laquelle est inclue une authentification.php, un menu.php et un contenu.php.
mon authentification et mon menu proposent à l'utilisateur authentifié un lien le redirigeant vers index.php, soit la même page, mais ajoutant une variable d'url par la méthode GET.
Des que l'on clique sur ce lien, ma session est vidée et l'utilisateur se retrouve donc face au formulaire d'authentification.
Pourtant l'identifiant de session est bien conservé, il s'agit du même, même quand la session a été vidée.
Le session_start(); est bien en début de la page index.php.
Mon souci est-il du au fait que tous les éléments sont inclus dans la même page index.php ?
Dans ce cas pourquoi se produirait-il qu'en local et pas sur mon hébergeur ?
Ci joint le code reproduisant cette erreur, il ne s'agit pas du code du site en question qui contient trop d'élément inutile à la résolution du souci,
mais d'une version volontairement extrêmement épurée afin de ne mettre en avant que le problème de fonctionnement.
Je vous remercie de l'attention que vous porterez à mon souci et vous souhaite une excellente journée.
index.php :
authentification.php :
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 <?php session_start(); echo "ID de session : " . session_id()."<br/>"; if (!empty($_SESSION)) { echo '<pre>$_SESSION = '; print_r($_SESSION); echo '</pre>'; } include ("authentification.php"); include ("menu.php"); include ("contenu.php"); ?>
menu.php :
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 <?php $formulaire = "<form action='index.php' method='post'> ok : <input type='text' name='ok' value='ok' maxlength='15' size='15' /> <input type='submit' value='Valider' /> </form>"; if ( (!isset($_SESSION['ok']) || $_SESSION['ok'] == "") && ( !isset($_POST['ok']) ) ) { echo $formulaire; } else { if (isset($_POST['ok']) ) { if($_POST['ok'] == "ok") { $_SESSION['ok'] = $_POST['ok'] ; echo ($_SESSION['ok']."<br/>"); echo "<a href='index.php?var=contenu' >Contenu</a><br/>"; echo "<a href='deconnexion.php'>Me deconnecter.</a></br></br>"; } else { echo("non<br/>"); echo $formulaire; } } else { echo ($_SESSION['ok']."<br/>"); echo "<a href='index.php?var=contenu' >Contenu</a><br/>"; echo "<a href='deconnexion.php'>Me deconnecter.</a></br></br>"; } } ?>
contenu.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <?php if (isset($_SESSION['ok']) ) { echo "<a href='index.php?var=contenu' >Contenu</a><br/><br/>"; } ?>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <?php if(isset($_GET['var']) && isset($_SESSION['ok']) ) { echo "Ceci est le contenu. <br/>"; } ?>
Partager