Page 1 sur 1

session perdue

Posté : 11 avr. 2006, 10:18
par cpmac
Bonjour
J'ai un pb avec des sessions.


Il y a une partie public qui enregistre des commandes. Un session 'list' est utilisé pour controler le passage entre les pages. Cette partie marche correctement.

Mais la partie admin pose des problemes.
La page Index recolte le login et mot de passe.
Elle les envoie par POST à la page login.
Si le login et mot de passe sont correcte une session 'login' est ouvert, puis on arrive à la page menu avec control par 'if (session_is_registered('login'))'.
Ca marche.
On choisit un lien 'editer article'.
On arrive à la page editer_article.php3 avec controlle de session.
Ca marche.
On choisit un article et puis on passe à la page editer_article2.php3 vec controlle de session.
Ca marche
Puis on clique sur OK pour envoyer les changements par 'POST' à la page maj_produit.php3.
La session n'est plus.


J'ai reduit le code au minimum et le résultat est pareil.

editer_produit2.php3
<?
session_start();
if (!session_is_registered('login')) {
	header("Location: page_centrale.php3");
}
?>
<center>
<br><br>
<form action="maj_produit.php3" method="post" >
<table border="0">
<tr>
<td>Article: </td>
<td>
<input type=Submit value=Ok></form>
<?
if (session_is_registered('login')) {
	echo "registered";
}
?>
</td>
</tr>
</table>
</form>


La page maj_produit.php3 (changer de l'origine pour demontrer le phenomene)
<?
session_start();

if (!session_is_registered('login')) {
echo "registered";
}else{echo "not registered";
}

?>

Sur la page editer_produit2.php3
On peut voir 'registered' à coté du bouton OK.

Sur la page maj_produit.php3 on voit 'not registered'.
Le code d'origine nous envoyait à page login, comme il n'a plus de session.

Purquoi la session est partie?

Posté : 11 avr. 2006, 10:21
par Cyrano
Avec session_start(), on utilise pas session_is_registered() mais plutôt isset($_SESSION['login']) pour tester l'existence de la variable que tu auras préalablement définie lors de la validation d'identification par:
$_SESSION['login'] = $login;
Par exemple.

Posté : 11 avr. 2006, 10:42
par cpmac
Merci pour la réponse.
Mais sur ma page login
if (IsSet($check)) {
	$login = $admin;
	session_register('login');
	include("nav.php3");
	exit;
} else {
	header("Location: page_centrale.php3");
}

Est ce que l'utilisation de session _ register est valable?


cpmac

Posté : 11 avr. 2006, 10:46
par Cyrano
Non, c'est précisement ce que je t'ai indiqué dans ma précédente réponse en illustrant pas la syntaxe à utiliser.

Tu crées une variable de session en faisant :
$_SESSION['index_de_ta_variable'] = "valeur de ta nouvelle variable de session";

Posté : 11 avr. 2006, 11:17
par cpmac
Oui j'avais compris entre temps.
J'ai fait les changements et çà marche.
merci
cpmac