Probleme de session PHP
darksamourai
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
kij_82 Messages postés 4089 Date d'inscription Statut Contributeur Dernière intervention -
kij_82 Messages postés 4089 Date d'inscription Statut Contributeur Dernière intervention -
bonjour à tous,
j'aimerai avoir votre aide sur un problème:
j'ai un problème au niveau des sessions php. Aparement, les sessions sont sensé resté ouverte tant que le navigateur n'est pas fermé.Sur ma page j'ai une page principale qui contient en include le central pour différent sujet et un petit include qui permet de se loguer.
Et c'est cette partie que je n'arrive pas à faire marcher.
dans mon index.php j'ai :
ça ça a l'air de marcher.
Mais dans ma page d'identification, j'ai:
çe que je ne comprend pas, c'est que la premiere fois que je me log, il m'affiche bien le nom correspondant au login donc $_SESSION['nom_client'] est bien rempli. Mais lorsque je clique sur une section de mon menu, la page d'identification se remet en formulaire (en appelant la fonction affich_form) et quand j'essaie d'afficher le contenu de $_SESSION['nom_client'], il est vide....aurais je rater quelque chose dans la notion de session??
merci de votre aide
j'aimerai avoir votre aide sur un problème:
j'ai un problème au niveau des sessions php. Aparement, les sessions sont sensé resté ouverte tant que le navigateur n'est pas fermé.Sur ma page j'ai une page principale qui contient en include le central pour différent sujet et un petit include qui permet de se loguer.
Et c'est cette partie que je n'arrive pas à faire marcher.
dans mon index.php j'ai :
import_request_variables("G","recuG_"); if(isset($recuG_delog)) { session_destroy(); //ou $_SESSION[idclient]='NULL'; } if($PHPSESSID) session_start($PHPSESSID); else session_start();
ça ça a l'air de marcher.
Mais dans ma page d'identification, j'ai:
<table width="100%"> <tr><td> <? if (isset($recu_login)) { $md5pass=md5($recu_pass); $sql="select no_client,nom_client,statut_client from client where login_client=\"$recu_login\" and pass_client=\"$md5pass\""; $res = mysql_query($sql); $result = mysql_fetch_array($res); $num=$result[0]; $nom=$result[1]; $statut=$result[2]; mysql_close(); if($num="") { echo "erreur d'identification</br></br>"; affich_form(); } else { $_SESSION['idclient']=$num; $_SESSION['nom_client']=$nom; $_SESSION['status_client']=$statut; echo $_SESSION['status_client']." ". $_SESSION['nom_client']."<br><br>"; echo "se déloguer "; } } else { if(isset($_SESSION['idclient']) ||$_SESSION['idclient']=="") { affich_form(); } else { echo $_SESSION['status_client']." ". $_SESSION['nom_client']."<br><br>"; echo "se déloguer "; } } ?> </td></tr> <tr><td> <?panier();?> </td></tr> </table>
çe que je ne comprend pas, c'est que la premiere fois que je me log, il m'affiche bien le nom correspondant au login donc $_SESSION['nom_client'] est bien rempli. Mais lorsque je clique sur une section de mon menu, la page d'identification se remet en formulaire (en appelant la fonction affich_form) et quand j'essaie d'afficher le contenu de $_SESSION['nom_client'], il est vide....aurais je rater quelque chose dans la notion de session??
merci de votre aide
A voir également:
- Probleme de session PHP
- Easy php - Télécharger - Divers Web & Internet
- Teamviewer code de session expiré ✓ - Forum logiciel systeme
- Expert php pinterest - Télécharger - Langages
- Veuillez ouvrir une session avec les privilèges du gestionnaire ✓ - Forum Jeux vidéo
- Session invalide ou obsolète ✓ - Forum finances
1 réponse
Oui, tu ne passe pas l'identifiant de session à tes autres pages, c'est ca qui ne va pas et qui fait que des qu'un utilisateur va sur une autre page, il se retrouve comme s'il n'était pas loggué.
Pour cela, au début de chacune de tes autres pages, il faut que tu mettre un script qui te permette de balader l'identifiant, c'est à dire marquer :
session_start(); au début des autres pages.
Et si tu veux qu'un utilisateur non logué ne vienne pas sur une page, tu met un script du genre suivant au début de tes pages en question :
Cela permet de rediriger les utilisateur non logué vers une autre page.
++
Pour cela, au début de chacune de tes autres pages, il faut que tu mettre un script qui te permette de balader l'identifiant, c'est à dire marquer :
session_start(); au début des autres pages.
Et si tu veux qu'un utilisateur non logué ne vienne pas sur une page, tu met un script du genre suivant au début de tes pages en question :
session_start(); if( ! isset($_SESSION['bidule'])) { header("location: nomdufichierdetonformulairedelog"); }
Cela permet de rediriger les utilisateur non logué vers une autre page.
++
mais normalement session_start() est sensé etre au tout debut de chaque page, c'est à dire on ne doit pas avoir d'echo ou autre affichage avant cette commande.
Or si toutes mes pages sont en include (on clique sur le menu, et on appelle index.php?menu=accueil, index inclus alors accueil.php), je ne peu mettre le session_start() que dans index.php, ça doit suffir non?
merci de ton aide en tout cas
++
Oui pour ce midi évidement, je ne voudrais pas contrarier ton ventre... :)
++
désolé, j'était parti faire quelques courses pour rester de bonne humeur pour la journée...
au vu de ta réponse, je comprends toujours pas, c'est bien ce que j'ai fait, d'apres ce qu'on m'a dit, il faudrait passer dans le lien sid=<? PHPIDSESSION ?> mais si on passe ça, faut faire un test spécifique? ou le fait de passer l'id de session assure a lui tout seul la continuité de la session??
parceke si je ne m'abuse mon code tel qu'il est écrit ne détruit à aucun moment mes variables de session...donc je comprends pas pourquoi elles sont pas gardées une page à une autre...
merci encore et bon ap :p