Perte de valeur de $_SESSION avec header
nane_nana
Messages postés
49
Statut
Membre
-
nane_nana Messages postés 49 Statut Membre -
nane_nana Messages postés 49 Statut Membre -
Bonjour,
Je suis en train de développer la partie accès membre d’un site et je souhaite utiliser le type url index.php ?option=actionafaire¶m1=param1..
Mais j’ai découvert que je perds mes valeurs des variables session en utilisant des header (‘location : redirectionurl’)
J’ai 4 fichiers :
- index.php qui contient le chemin relatif vers tous les fichiers utilisés
- login.php qui contient le formulaire classique de connexion
- veriflogin.php qui traite les différentes erreurs que peut faire l’utilisateur (ex : champ login vide, mot de passe incorrect…).si aucune erreur n’est rencontrée il fait une redirection vers la page ‘index.php ?option=acces_membre’
- espace.php qui selon l’utilisateur connecté affiche les différentes actions possibles
Voici le code source des deux fichiers veriflogin.php et espace.php
Veriflogin.php
<?php
$login=$_POST['login'];
$pwd=$_POST['pwd'];
if (empty($login))
{
Traitement erreur
}
elseif (empty($pwd))
{
Traitement erreur
);
}
else
{
connexion();
$sql="select login,pwd,type from users where login='$login' and pwd='$pwd'";
$req=mysql_query($sql) or die ('Erreur d\'exécution'.mysql_error());
$nbre=mysql_num_rows($req);
$res=mysql_fetch_array($req);
mysql_close();
if ($nbre==0)
{
Traitement erreur
}
else
{
$_SESSION['user_type']=$res['type'];
header("Location:../index.php?option=acces_membre");
}
}
?>
Espace.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Document sans nom</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<h1 align="center">Administration du site</h1>
<table width="100%" border="1" cellpadding="0" cellspacing="0">
<?php
if ($_SESSION['user_type']==1)
{
?>
Liste actions possibles
<?php
}
else
{
Liste actions possibles
}
?>
</table>
</body>
Tout marche nickel mais arrivé à l’espace membre je trouve l’erreur suivante :
Notice: Undefined index: user_type in c:\program files\easyphp1-8\www\ex_projet\admin\membre\espace.php
NB : la fonction session_start() est appelée dans le début du fichier index.php vu que tout les autres fichiers y sont inclus (inclus dans index.php)
Je suis en train de développer la partie accès membre d’un site et je souhaite utiliser le type url index.php ?option=actionafaire¶m1=param1..
Mais j’ai découvert que je perds mes valeurs des variables session en utilisant des header (‘location : redirectionurl’)
J’ai 4 fichiers :
- index.php qui contient le chemin relatif vers tous les fichiers utilisés
- login.php qui contient le formulaire classique de connexion
- veriflogin.php qui traite les différentes erreurs que peut faire l’utilisateur (ex : champ login vide, mot de passe incorrect…).si aucune erreur n’est rencontrée il fait une redirection vers la page ‘index.php ?option=acces_membre’
- espace.php qui selon l’utilisateur connecté affiche les différentes actions possibles
Voici le code source des deux fichiers veriflogin.php et espace.php
Veriflogin.php
<?php
$login=$_POST['login'];
$pwd=$_POST['pwd'];
if (empty($login))
{
Traitement erreur
}
elseif (empty($pwd))
{
Traitement erreur
);
}
else
{
connexion();
$sql="select login,pwd,type from users where login='$login' and pwd='$pwd'";
$req=mysql_query($sql) or die ('Erreur d\'exécution'.mysql_error());
$nbre=mysql_num_rows($req);
$res=mysql_fetch_array($req);
mysql_close();
if ($nbre==0)
{
Traitement erreur
}
else
{
$_SESSION['user_type']=$res['type'];
header("Location:../index.php?option=acces_membre");
}
}
?>
Espace.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Document sans nom</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<h1 align="center">Administration du site</h1>
<table width="100%" border="1" cellpadding="0" cellspacing="0">
<?php
if ($_SESSION['user_type']==1)
{
?>
Liste actions possibles
<?php
}
else
{
Liste actions possibles
}
?>
</table>
</body>
Tout marche nickel mais arrivé à l’espace membre je trouve l’erreur suivante :
Notice: Undefined index: user_type in c:\program files\easyphp1-8\www\ex_projet\admin\membre\espace.php
NB : la fonction session_start() est appelée dans le début du fichier index.php vu que tout les autres fichiers y sont inclus (inclus dans index.php)
A voir également:
- Perte de valeur de $_SESSION avec header
- Reinstaller windows sans perte de données - Guide
- Agrandir une image sans perte de qualité - Guide
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
- Gpt header corruption ✓ - Forum Windows 10
- Liste de valeur excel - Guide
6 réponses
Salut,
Vérifie en faisant un echo et en enlevant le header dans ta page de contrôle que $res['type'] existe bien et qu'il a une valeur.
Vérifie en faisant un echo et en enlevant le header dans ta page de contrôle que $res['type'] existe bien et qu'il a une valeur.
En fait tu ne dois pas générer de code HTML avant d'appeler ton header.
Concrètement avant ton header t'as interdiction de mettre un echo et d'écrire en HTMLl...
Essaies ça et dis moi ;-)
Concrètement avant ton header t'as interdiction de mettre un echo et d'écrire en HTMLl...
Essaies ça et dis moi ;-)
au fait le debut du fichier veriflogin.php est comme suit
$login=$_POST['login'];
$pwd=$_POST['pwd'];
if (empty($login))
{
header("Location:../index.php?option=erreur_nom_utilisateur_vide");
}
elseif (empty($pwd))
{
header("Location:../index.php?option=erreur_mot_passe_vide&login=".$login);
}
else
{
$pwd=pwd_encode($pwd);
connexion();
$sql="select login,pwd,type from users where login='$login' and pwd='$pwd'";
$req=mysql_query($sql) or die ('Erreur d\'exécution'.mysql_error());
$nbre=mysql_num_rows($req);
$res=mysql_fetch_array($req);
mysql_close();
if ($nbre==0)
{
header("Location:../index.php?option=erreur_non_correspondants&login=".$login);
}
else
{
$_SESSION['user_type']=$res['type'];
header("Location:../index.php?option=acces_membre");
}
mysql_close();
}
et les trois premiers headers marchent sans aucun souci.
ce n'est que le dernier qui pose le probleme: il fait la redirection mais la valeur de me fait perdre la valeur de $_SESSION['user_type'] selon le message
Notice: Undefined index: user_type in c:\program files\easyphp1-8\www\ex_projet\admin\membre\espace.php
$login=$_POST['login'];
$pwd=$_POST['pwd'];
if (empty($login))
{
header("Location:../index.php?option=erreur_nom_utilisateur_vide");
}
elseif (empty($pwd))
{
header("Location:../index.php?option=erreur_mot_passe_vide&login=".$login);
}
else
{
$pwd=pwd_encode($pwd);
connexion();
$sql="select login,pwd,type from users where login='$login' and pwd='$pwd'";
$req=mysql_query($sql) or die ('Erreur d\'exécution'.mysql_error());
$nbre=mysql_num_rows($req);
$res=mysql_fetch_array($req);
mysql_close();
if ($nbre==0)
{
header("Location:../index.php?option=erreur_non_correspondants&login=".$login);
}
else
{
$_SESSION['user_type']=$res['type'];
header("Location:../index.php?option=acces_membre");
}
mysql_close();
}
et les trois premiers headers marchent sans aucun souci.
ce n'est que le dernier qui pose le probleme: il fait la redirection mais la valeur de me fait perdre la valeur de $_SESSION['user_type'] selon le message
Notice: Undefined index: user_type in c:\program files\easyphp1-8\www\ex_projet\admin\membre\espace.php
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
au fait tous mes fichiers sont inclus dans index.php
Voici sont contenu
<?php
session_start();
?>
<html>
<head>
<title>titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body >
<?php
$optionOK=array('erreur' => 'prive/login.php',
'acces_membre' => 'prive/espace.php', );
if ((isset($_GET['option'])) && (isset($optionOK[$_GET['option']])) )
{
include($optionOK[$_GET['option']]);
}
else
include ('prive/login.php');
?>
</body>
</html>
donc la page espace.php doit être inclut dans l'index.php
Voici sont contenu
<?php
session_start();
?>
<html>
<head>
<title>titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body >
<?php
$optionOK=array('erreur' => 'prive/login.php',
'acces_membre' => 'prive/espace.php', );
if ((isset($_GET['option'])) && (isset($optionOK[$_GET['option']])) )
{
include($optionOK[$_GET['option']]);
}
else
include ('prive/login.php');
?>
</body>
</html>
donc la page espace.php doit être inclut dans l'index.php