rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Probleme de session PHP

darksamourai, le mardi 19 avril 2005 à 23:10:23
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
Répondre à darksamourai  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kij_82, le mardi 19 avril 2005 à 23:24:19
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.

++ ~ iclic @ gauch,iclic, iclic @ droate, iclic, iclic
et ya pas de bôg môsieu ! ~
Répondre à kij_82

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
darksamourai, le mercredi 20 avril 2005 à 11:33:00
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
Répondre à darksamourai

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kij_82, le mercredi 20 avril 2005 à 11:55:43
Oui, ca suffit, si tu fais des include, le session_start() du début de fichier qui fait les include suffit normalement.

++ ~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~
Répondre à kij_82

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
m0n0-le-14r3, le mercredi 20 avril 2005 à 11:40:28
on mange a midi?? sam est pas venu ce matin... :)
Répondre à m0n0-le-14r3

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kij_82, le mercredi 20 avril 2005 à 11:56:51
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... :)

++ ~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~
Répondre à kij_82

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
darksamourai, le mercredi 20 avril 2005 à 12:45:21
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
Répondre à darksamourai

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kilian, le mercredi 20 avril 2005 à 13:07:45
Ce ne serait pas plutôt ça ton erreur?

=>
if($num="")

C'est une affectation. Je suppose que tu voulais faire une comparaison:
if($num=="")


Du coup comme l'affectation est toujours vraie dans ton cas, ça ne passe jamais à else.... Donc pas d'affectation dans tes variables sessions.... :-)
Répondre à kilian

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
darksamourai, le mercredi 20 avril 2005 à 13:39:10
non c'est une erreur de recopie de ma part (du à une série de modification et qd j'ai copié y'avai en effet cette erreur)
Répondre à darksamourai

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kij_82, le mercredi 20 avril 2005 à 20:05:09
Si tu peux t'inspirer de ca :
code de page1.php :
<?php
session_start();

// récupération de step
if(!isset($_GET['step']))
	$step = 1;
else
	$step = $_GET['step'];
	
// création du cookie
if($step == 1)
{
	// création d'un cookie de test
	setcookie('test', '1');
	// redirection
	header("location: page1.php?step=2");
	exit;
}
else if($step == 2)
{
	// si le cookie est défini
	if(isset($_COOKIE['test']))
	{
		// suppression du cookie
		setcookie('test');
		// url
		$url = 'page2.php';
	}
	// le cookie n'est pas défini
	else
	{
		// on passe en paramètre l'id de la session
		$url = 'page2.php?SID=' . session_id();
	}
	
	// on crée une variable de session
	$_SESSION['variable'] = 123;
	
	// lien pour la page suivante
	echo '<a href="' . $url . '">Page 2</a>';
}
?>

Code de page2.php :
<?php
function url($url)
{
	if(isset($_GET['SID']) && strpos($url, 'SID=') === false)
	{
		if(strpos($url, '?') === false)
			$url .= '?SID=' . $_GET['SID'];
		else
			$url .= '&SID=' . $_GET['SID'];
	}
	
	return $url;
}
		
// si la variable SID est passée par l'url --> le client accepte pas les cookies
// --> on spécifie un identifiant de session
if(isset($_GET['SID']))
	session_id($_GET['SID']);
	
// on démarre la session
session_start();

// affichage de la valeur de la variable de session
echo 'La variable de session vaut: ' . $_SESSION['variable'];

echo '<br><br><a href="' . url('page3.php') . '">Page3</a>';
?>


Voilà, d'autres soucis ?
++ ~ iclic @ gauch,iclic, iclic @ droate, iclic, iclic
et ya pas de bôg môsieu ! ~
Répondre à kij_82

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
darksamourai, le jeudi 21 avril 2005 à 09:01:06
j'ai trouvé mon erreur........

c'etait if( ! isset($_SESSION['idclient']) alors afficher le formulaire.... il me manquait le !....3 jours de bloquage pour ça....

merci de ton aide en tout cas
Répondre à darksamourai

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 kij_82, le jeudi 21 avril 2005 à 09:05:10
Ah ba, évidement ...

Tant mieux car je commencais à me poser des questions ! :)

++ ~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~
Répondre à kij_82
Logiciels pertinents trouvés dans les téléchargements
Télécharger PHP Edit 0.6PHP Edit - PHPEdit est un environnement de développement intégré (IDE) sous Windows pour le langage PHP. Il offre un grand nombre de...Catégorie: PHP
Licence: Freeware/gratuit
Télécharger Session Manager 0.6.1.13Session Manager - Session Manager est un outil permettant de sauver et de restaurer les états de toutes les fenêtres sous Firefox. Cette...Catégorie: Extensions Firefox
Licence: Freeware/gratuit
Télécharger MSN Polygamy 21-06-2006MSN Polygamy - Msn/Windows Live Messenger Polygamy permet d'ouvrir plusieurs instances (copies) de Windows Live Messenger avec...Catégorie: Messagerie instantanée
Licence: Freeware/gratuit
Télécharger WAMP Server 2.0cWAMP Server - WAMP5 (WAMP signifiant Windows Apache Mysql PHP) est une plateforme de développement Web sous Windows. Il vous permet de...Catégorie: Serveurs
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « session en PHP »