Prb pour conserver une session en PHP

Fermé
themoz Messages postés 1 Date d'inscription mercredi 23 mai 2007 Statut Membre Dernière intervention 23 mai 2007 - 23 mai 2007 à 22:22
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 - 24 mai 2007 à 00:38
Bonjour,

Je suis en train de finaliser un extranet. Toute l'application fonctionne uniquement sur une page index.php.

Dès le départ, j'initialise une session avec session_start. Je m'identifie et quand je suis reconnu comme membre, on affiche la page d'accueil de l'extranet. Jusque là tout va bien. Puis quand je clique sur un lien pour aller sur une autre page de l'extranet. il revient au formulaire d'inscription. Il faut alors que je me reconnecte pour que la session soit conservée.

J'ai fait afficher l'id de la session tout du long et je retrouve bien le même id sur la page avec le formulaire d'identification, puis sur la page d'accueil. En revanche, dès que je clique sur une page, j'ai un nouvel id de session. je n'arrive pas à comprendre pourquoi la session n'est pas conservée.

Avez-vous une idée ?

Voici le script de ma page index.php

session_start();
// On intègre tous les fichiers de configuration
define("URL_PARAMETRES","parametres-sm");
require ("fichiers_conf.php");



// On récupère les variables communiquées par l'url

$var_url = parse_str($_SERVER['QUERY_STRING'],$output);
$section = $output['sec'];
$action = $output['act'];
$item = $output['id'];
$affichage = $output['aff'];
$upload_media = $output['upl'];
$action_serveur = $output['ser'];
$media = $output['med'];




/*
	On contrôle s'il existe une session d'identification
	On contrôle que cette session n'est pas vide
	On contrôle que cette session a bien été ouverte
	Si tout est ok, on affiche une page intérieure.
*/
if (	isset($_SESSION['ID_USER']) AND $_SESSION['ID_USER'] > 0 ) 
{
	
	/* 
		On controle que l'utilsateur est bien autorisé à accéder à cette section.
		Si oui, on affiche la page sans souci. 
		Si non, on revient à la page d'accueil.
	*/
	
	if (	!empty($action_serveur) )
	{
		echo templates_page_upl($upload_media,$action_serveur,$media);
	}
	else
	{
		if ( !empty($section) AND $tab_content[$section]['niveau_acces'] <= $_SESSION['NIVEAU_USER'] )
		{
			echo templates_page_admin($action,$item,$section,$affichage);
		}
		else
		{
			echo templates_page_admin("","","","");
		}
	}
	
	/*
		On met à jour le liste des flux RSS du site
		Si un problème empèche la création des flux, un email est envoyé à l'administrateur du site
	*/
	if (!empty($tab_flux) AND generer_liste_flux_rss($tab_flux) == FALSE)
	{
		$To = EMAIL_ADMIN;
		$Sujet = $phrase_gene['SujetEmailPrbRss'];
		$Message = $phrase_gene['TextePrbEmailRss'].NOM_SITE;
		$From = "From: Arnaud Meunier <arno_job@yahoo.fr>\n";
		mail($To,$Sujet,$Message,$From);
	}

}


/*
	On contrôle que le formulaire d'identification a bien été envoyé
	Si oui, on contrôle le login et le mot de passe. 
	Si l'utilisateur est reconnu, on l'enregistre dans le table "suivilog" et on recharge la page
	Si l'utilisateur n'est pas reconnu, on affiche le formulaire d'identification avec le message d'erreur
*/

else if (	isset($_POST['login']) 
					AND !empty($_POST['login']) )
{
	// enregistrement dans suivilog et variables session dans la fonction de controle
	if (controle_identification($_POST['login'],$_POST['password']) == TRUE)
	{
		echo templates_page_admin("","","","");
	}
	else
	{
		echo templates_login($phrase_gene['VosIdentifiantsNonReconnus'],$_POST);
	}
}


/* 
	Si on a aucune action en cours et de session ouverte, on affiche le formulaire d'identification
*/

else
{
	$valeurs_form = array();
	echo templates_login("",$valeurs_form);
	exit();
}


Et ma fonction qui créé les variables de session
function controle_identification($login,$password)
{
	$val = FALSE;
	if ($login != "" AND $password != "")
	{
		connexion_base(SERVEUR,HOST,PASSWORD,BASE);
		$requete = rq_existence_membre($login,$password);
    $rs = mysql_query($requete) or die(mysql_error());
    connexion_end();
    
		if (mysql_num_rows($rs) > 0)
		{
			$row = mysql_fetch_array($rs);
			$_SESSION['ID_USER'] = $row['ID'];
			$_SESSION['LANGUE_USER'] = $row['Langue'];
			$_SESSION['NIVEAU_USER'] = $row['Niveau'];
			
			connexion_base(SERVEUR,HOST,PASSWORD,BASE);
			$requete = rq_insert_suivilog($_SESSION['ID_USER'],$_SESSION['LANGUE_USER'],$_SESSION['NIVEAU_USER'],$_SERVER['REMOTE_ADDR']);
    	$rs = mysql_query($requete) or die();
    	connexion_end();	
		}	
		$val = TRUE;
	}
	return $val;
}

1 réponse

gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 331
24 mai 2007 à 00:38
est ce qu'il ne faut pas que tu place un dossier "sessions" en racine de ton site ?
sinon tu peux tenter par cookie... ùais j'y connais rien
0