Problème de session
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je finalise un site privé ou je souhaite mettre en place un login et password.
Ca coince au niveau des sessions. Je m'explique :
Le formulaire de connexion envoi ces données si la connexion est ok :
Ensuite dans chaque page de mon site, j'ai ce code en premier lieu :
Le formulaire me redirige bien vers 'index.php', cependant lorsque je navigue vers une autre page, il m'est systématiquement demandé de me logguer...
Che passa ?
Merci pour vos conseils :-)
Je finalise un site privé ou je souhaite mettre en place un login et password.
Ca coince au niveau des sessions. Je m'explique :
Le formulaire de connexion envoi ces données si la connexion est ok :
if ($pseudoTrouve==$pseudo AND $passwordTrouve==$password) {
session_start();
$_SESSION['pseudo'] = $resultat['pseudo'];
echo '<meta http-equiv="refresh" content="0;URL=index.php">';
} else {
echo 'Vos identifiants sont incorrects';
}
Ensuite dans chaque page de mon site, j'ai ce code en premier lieu :
<?php
session_start();
if(!isset($_SESSION['pseudo']))
{
echo '<meta http-equiv="refresh" content="0;URL=login.php">';
exit();
}
?>
Le formulaire me redirige bien vers 'index.php', cependant lorsque je navigue vers une autre page, il m'est systématiquement demandé de me logguer...
Che passa ?
Merci pour vos conseils :-)
4 réponses
-
'jour, Che passa ? Che passa que tu fais la redirection vers la page de login à chaque fois que
$_SESSION['pseudo']
est pas défini (donc que t'es pas loggé), vu que tu as mis ce code en début de chaque page...
Mais surtout tu metssession_start();
autre part qu'au début de ton code (sur login.php), normalement on le met au tout début de la page avant que le moindre octet soit envoyé (attention au BOM de l'UTF-8), sinon ça ne marche pas. -
Salut,
Merci de ta réponse
Dans mon premier exemplesession_start();
n'est pas au début car je suis encore dans le formulaire de connexion mais sinon dans mes autres pages, il est bien entendu en tout premier (comme dans mon second code ci dessus).
En revanche pour$_SESSION['pseudo']
je ne comprend pas car les variables de sessions se transmettent de pages en pages non ?
Quel est le paramètre à modifier ou ajouter pour qu'il sache que je suis logué et que ma session est valide tant que je ne ferme pas la page ?-
Normalement oui les sessions sont gardées entre les pages, c'est même leur but... Étant donné que les sessions sont stockées sur le serveur et que le client recoit un cookie qui ne contient que l'ID de la session, peut-être que ton hébergeur a désactivé les sessions, bien que peu probable; surtout si tu testes en local.
session_start()
renvoie-t-elle TRUE?
Si c'est quand même le cas il se peut que le cookie soit désactivé (dans php.ini) et donc qu'il soit nécessaire de passer l'ID de session autrement. -
-
-
Bonsoir,
Le démarrage de la session doit être faite au tout début de la page même dans ton script de connexion.
Je te suggère de mettre le session_start() en dehors de ton if.Consulte ce lien tu trouvera de plus ample infos:http://www.php-astux.info/sessions-php.php-
Salut,
Merci de ta réponse.
J'ai déjà effectué les deux possibilités en incluant monsession_start();
dans et en dehors de ma condition.
Concernant ton lien, j'ai le même code<?php session_start(); if (!isset($_SESSION['pseudo'])) { echo '<meta http-equiv="refresh" content="0;URL=login.php">'; exit(); } ?> Suite de la page
Lorsque je laisse juste lesession_start();
, il vaut bien 1 même si je recharge la page tandis que je perds les infos stockées dans les variables de session... -
-
-
Je pense avoir trouvé.
J'avais dans mes pages<a href="session_destroy();">X</a>
Je pensais que ça marcherait uniquement quand je cliquerais dessus mais visiblement non...
J'ai modifié par<a href="deco.php">X</a>
et inclus monsession_destroy();
à l'intérieur.
Ca marche maintenant du coup.
Merci gravgun et stgcici pour vos réponses. :-)