Problème de session

Résolu/Fermé
Utilisateur anonyme - 4 déc. 2013 à 12:37
 Utilisateur anonyme - 4 déc. 2013 à 18:05
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 :
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

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
4 déc. 2013 à 12:50
'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 mets
session_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.
0
Utilisateur anonyme
4 déc. 2013 à 12:55
Salut,
Merci de ta réponse

Dans mon premier exemple
session_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 ?
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
4 déc. 2013 à 13:06
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.
0
Utilisateur anonyme
4 déc. 2013 à 15:12
session_start()
renvoie-t-elle TRUE?
Je pense que oui car
echo $_SESSION['pseudo']
m'affiche bien mon pseudo.

Je suis effectivement en local avec Mamp. Par contre, dès que je réactualise ma page, je suis redirigé vers la page de login...
0
stgcici Messages postés 51 Date d'inscription mardi 29 octobre 2013 Statut Membre Dernière intervention 18 février 2014 1
4 déc. 2013 à 17:00
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
0
Utilisateur anonyme
4 déc. 2013 à 17:30
Salut,
Merci de ta réponse.

J'ai déjà effectué les deux possibilités en incluant mon
session_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 le
session_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...
0
Utilisateur anonyme
4 déc. 2013 à 17:51
Dans le dossier php dans mon serveur local, j'ai un fichier sess_0123456789 qui apparait et qui disparait..... QUAND JE SUIS LOGUÉ !
Le problème ne viendrait-il pas de là ? ^^
0
Utilisateur anonyme
4 déc. 2013 à 18:05
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 mon
session_destroy();
à l'intérieur.

Ca marche maintenant du coup.

Merci gravgun et stgcici pour vos réponses. :-)
0