Probleme de session PHP

Fermé
darksamourai Messages postés 2 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 19 avril 2005 - 19 avril 2005 à 23:10
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 - 21 avril 2005 à 09:05
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 jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
19 avril 2005 à 23:24
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
20 avril 2005 à 11:33
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 mercredi 13 avril 2005 Statut Membre Dernière intervention 25 octobre 2005 17
20 avril 2005 à 11:40
on mange a midi?? sam est pas venu ce matin... :)
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857 > darksamourai
20 avril 2005 à 11:55
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 jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857 > m0n0-le-14r3 Messages postés 174 Date d'inscription mercredi 13 avril 2005 Statut Membre Dernière intervention 25 octobre 2005
20 avril 2005 à 11:56
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 jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013
20 avril 2005 à 12:45
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