[PHP]Fichier et variables de session

Fermé
Kev - 22 avril 2005 à 11:18
 JasoQ - 2 juin 2011 à 10:03
Bonjour,

Je suis actuellement en train de developper un site ayant un espace membres. Il y a donc une partie accesible a tous et une autre qui necessite un login et un mot de passe. La structure de mon site est la suivante : j'ai une page index.php dans laquelle j'inclus un menu et un contenu centrale donc je ne fait que une fois session_start();.

Voici mon probleme : je me connecte a l'espace membres correctement (login et mdp valide), je créé une variable de session login ($_SESSION['login']) mais des que je change de page cette variable disparait et n'est plus défini.

J'ai ete voir et j'ai fait quelques tests avec les fichiers de sessions, si je créé une variable de session dans la parite accessible a tous elle apparait bien dans le fichier par contre si je créé une variable de session quelconque (un int ou u string banal) celle ci n'apparait pas dans le fichier de session.

voila je ne sait pas trop comment regler ce probleme.

Merci d'avance pour les eventuels reponses.

Bonne journée a tous
A voir également:

7 réponses

kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
22 avril 2005 à 11:32
Oh, un amis Winbus2000, il va à combien le tiens (Bonjours harry!)
;)

) Je ferme la parenthèse sur ce dérapage : en ce qui concerne ton pb, de session :
est-ce que dans ta deuxième page, tu fais un "session_start()" au début de ton script ?
Si non, met le et essaie d'afficher ta variable enregistrée dans la page précédente.
Si oui, ben... sais pô, fô voir !
1
J'ai fait d'autres test en créant $_SESSION['login'] = '' dans la partie accessible a tous. Jusqu'a la page de verification du login et mdp le fichier de sesion et $_SESSION['login'] existent mais des que j'arrive dans la partie membres (ou je fait un nouveau session_start() vu que ce n'est plus la meme page index.php) le fichier disparait et donc la variable en meme tps.
1
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
22 avril 2005 à 11:43
???

je te donne un exemple :
fichier fich1.php : (la ou tu met à jours ta variable de session)
<?php

session_start();

$_SESSION['coucou'] = "caca";

echo "<a href=\"fich2.php\">ici</a>";
?>

et le code de fich2.php (ton espace membre ou meme l'espace ou tout le monde peut venir :
<?php
session_start();
if(isset($_SESSION['coucou'])) {
   echo $_SESSION['coucou'];
}
else
{
   session_destroy();
   echo "pas de session en cours";
}
?>


Voilà, ton pb, si j'ai bien compris viens de la : tu ne met pas de session_start() dans les pages non membre, chose à laquelle il faut penser car si tu vas dans l'espace membre, puis dans l'espace ouvert, puis que tu revient dans l'espace membre alors la oui, tes variable de session ne seront plus valide si tu ne met pas de session_start() dans la partie commune du site.
Bon, maintenant je dit ca, mais j'ai jamais tester, mais théoriquement, ca devrait être ça je pense.

++
1
Jai verifier mes deux pages (partie commune et partie membres) elles ont bien leur session_start() en tout debut, ainsi que tout les pages que je n'appel pas de cette façon (.../index.php?page=maPage).

j'ai integrer l'exemple que tu m'a donné dans mes pages cela marche jusqu'a l'arrivé dans la partie membres. Voici ce qu'il contient jusqu'a ce qu'il disparaisse
test|s:6:"coucou";

c'est donc normal.

Ce que je ne comprends pas c'est que le fichier de session(qui se trouve dans le repertoire defini par session_save_path, tmp de easyPHP) disparait donc est supprimé alors que si je ferme une session sans etre aller dans la partie membre les fichiers de session restent.

je crois que si je trouve pourquoi le fichier disparait j'aurai ma solution. Je vais tester en mettant session_start() dans toutes mes pages je devrait tomber sur la bonne.
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
je sais pas si sa venait de ça mais voici comment etait mon lien de deconnexion avant et apres modif

Avant modif
<a href=../index.php onKeyPress=<?php session_destroy(); ?>>Deconnexion</a>


Apres Modif
<a href=../index.php onKeyPress=<?php echo "Deconnexion"?>>Deconnexion</a>


je ne comprend pas du tout pourquoi cette modif a tout arranger.

en tout cas sa marche maintenant.
1
je tombe la dessus 6 ans après pour poster un commentaire. Si je tombe dessus d'autre le verront bien un jour après tout.

Il y a un problème de compréhension général en fait (client/serveur, PHP et de la génération de page dynamique et de HTML) mais pas des sessions.

<a href=../index.php onKeyPress=<?php session_destroy(); ?>>Deconnexion</a>

- onKeyPress sert à exécuter une fonction javascript quand l'utilisateur va appuyer sur une touche de sont clavier. A priori c'était plutôt le clique qu'il fallait intercepter avec "onClick".
- session_destroy() sera exécuté à chaque fois que cette page sera appelée

Rappel : PHP sert à générer des pages web du coté serveur pour les envoyer au client (navigateur). Si vous voulez de l'interactivité avec votre page, ça passe par javascript.
Si vous "développez" un site web, assurez vous de connaitre les bases de l'architecture client/serveur, des mécanismes du web et des langages ;-)
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
22 avril 2005 à 14:57
C'est à dire ca marche ?
Si tu veux dre par là que ta session a toujours lieu, c'est normal puisqu'elle n'est pas détruite.
1
Oui en gros c'est sa elle n'est jamais detruite. le onKeyPress<?php session_destroy(); ?> devait surement la detruire sans qu'on clique sur le lien.

j'ai rajouter aussi

if(isset($SESSION['login'])) {
unset($_SESSION['login'])
}

dans la partie commune, on sait jamais.
1
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
22 avril 2005 à 15:20
Si tu fais ca, ca veut dire que si un utilisateur membre s'est logué et qui retourne sur la zone libre, il sera délogué enqq sorte et qu'il devra se relogé s'il veut retourner sur la zone membre.. Ce n'est pas forcément judicieux, mais c'est selon ce que tu veux gérer une fois de plus.
0
Oui j'ai penser a cela alors j'ai fait que les pages accesible a tous reste accessible aux membres logués.
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
22 avril 2005 à 15:32
Tres bien ma fois, tu n'a plus de pb alors, c'est bon ?
0
oui plus pour l'instant, j'espere que sa va durer

merci bien
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
22 avril 2005 à 15:39
++
0