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   -
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 :

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

1 réponse

kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
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 :
session_start();

if( ! isset($_SESSION['bidule'])) {
    header("location: nomdufichierdetonformulairedelog");
}



Cela permet de rediriger les utilisateur non logué vers une autre page.

++
0
darksamourai
 
merci,
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
0
m0n0-le-14r3 Messages postés 174 Date d'inscription   Statut Membre Dernière intervention   17
 
on mange a midi?? sam est pas venu ce matin... :)
0
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857 > darksamourai
 
Oui, ca suffit, si tu fais des include, le session_start() du début de fichier qui fait les include suffit normalement.

++
0
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857 > m0n0-le-14r3 Messages postés 174 Date d'inscription   Statut Membre Dernière intervention  
 
Tu peux pas mettre un post sur le café des menbre plutot que des ceux la ? lol

Oui pour ce midi évidement, je ne voudrais pas contrarier ton ventre... :)

++
0
darksamourai > kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention  
 
yo,
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
0