Page 1 sur 2

Ou est le probleme dans la gestion des sessions ???

Posté : 09 janv. 2012, 15:48
par RTS
Bonjour et merci pour votre aide,
voilà mon petit php de ma page d accueil ou je demande aux gens de se logguer :

<?php // partie php à mettre en début de ton fichier index.php :
// définition des parametres de connexion BD :

$host = 'mysql';
$user = 'abcdef';
$pass = '123456';
$db = 'toto';

if($_POST["login"] != "" && $_POST["mdp"] != "")
{
$login = $_POST["login"] ;
$mdp = $_POST["mdp"];

//connexion à ta base données
@mysql_connect($host,$user,$pass) or die("Impossible de se connecter");
@mysql_select_db("$db") or die ("Impossible de se connecter à la base");
$query_log = "SELECT * ";
$query_log .= "FROM log ";
$query_log .= "where login='".$login."' and mdp='".$mdp."'";
$result_log=mysql_query($query_log);
$result = mysql_fetch_object($result_log) ;

if(is_object($result))
{
//début de la session
session_start() ;

$_SESSION["login"] = $login ;

header("Location: http://toto.fr/welcome.php") ;
}
//sinon on reste sur l'accueil
else
{
header("Location: http://toto.fr/") ;
}//fin else
}//fin if



?>


et voilà le code que je veux mettre dans ma page welcome pour vérifier si la session est ouverte et dans les autres pages dans le futur :

<?php
if( ! isset($_SESSION['valid_user']))
{
header("location: http://toto.fr/");
exit;
}
?>


je pense qu il y a un bug dans mon dernier petit bout de php.....mais ou?????

merci de votre aide

Re: Ou est le probleme dans la gestion des sessions ???

Posté : 09 janv. 2012, 16:05
par RTS
j ai changé par ça sur ma page mais elle n est tjs pas bloqué si non logué :

<?php
if (isset($_SESSION['login']) && isset($_SESSION['mdp'])){
header("location: http://toto.fr/");
exit;
}
?>

Re: Ou est le probleme dans la gestion des sessions ???

Posté : 09 janv. 2012, 16:44
par xTG
Il faut mettre un session_start() sur chaque page. ;)

Re: Ou est le probleme dans la gestion des sessions ???

Posté : 09 janv. 2012, 16:50
par RTS
<?php
session_start() ;
if( ! isset($_SESSION['valid_user']))
{
header("location: http://toto.fr/");
exit;
}
?>

ma page est toujours pas bloquée.......helpppp

Re: Ou est le probleme dans la gestion des sessions ???

Posté : 09 janv. 2012, 16:58
par xTG
Places un var_dump($_SESSION); après ton session_start() pour vérifier que ta session est bien remplie.
Si elle est vide c'est ton script de connexion qui ne fonctionne pas.

Re: Ou est le probleme dans la gestion des sessions ???

Posté : 09 janv. 2012, 17:08
par RTS
ça m affiche ça sur ma page maintenant ce qui veut dire? ???

array(1) { ["login"]=> &string(14) "prenom.nom" }

Re: Ou est le probleme dans la gestion des sessions ???

Posté : 09 janv. 2012, 17:14
par Shenryu
Il ne connaît pas valid_user ou mdp puisque tu ne mets que le login dans ta session.
$_SESSION["login"] = $login ;
$_SESSION["valid_user"] = true ;

Re: Ou est le probleme dans la gestion des sessions ???

Posté : 09 janv. 2012, 17:19
par RTS
je ne comprends plus rien

le code php de ma page d accueil fonctionne tres bien il va vérifier login et mdp dans la bonne table et si c est ok m envoit sur une autre page,
mais cette autre page est accessible meme pas logué!!!

hellpppp

Re: Ou est le probleme dans la gestion des sessions ???

Posté : 09 janv. 2012, 17:22
par Shenryu
Et quelles valeurs as-tu dans ta session ?

Re: Ou est le probleme dans la gestion des sessions ???

Posté : 09 janv. 2012, 17:25
par RTS
volà le code de ma page de connexion :

<?php // partie php à mettre en début de ton fichier index.php :
// définition des parametres de connexion BD :

$host = 'mysql';
$user = 'abcdef';
$pass = '123456';
$db = 'toto';

if($_POST["login"] != "" && $_POST["mdp"] != "")
{
$login = $_POST["login"] ;
$mdp = $_POST["mdp"];

//connexion à ta base données
@mysql_connect($host,$user,$pass) or die("Impossible de se connecter");
@mysql_select_db("$db") or die ("Impossible de se connecter à la base");
$query_log = "SELECT * ";
$query_log .= "FROM log ";
$query_log .= "where login='".$login."' and mdp='".$mdp."'";
$result_log=mysql_query($query_log);
$result = mysql_fetch_object($result_log) ;

if(is_object($result))
{
//début de la session
session_start() ;

$_SESSION["login"] = $login ;

header("Location: http://toto.fr/welcome.php") ;
}
//sinon on reste sur l'accueil
else
{
header("Location: http://toto.fr/") ;
}//fin else
}//fin if



?>

Re: Ou est le probleme dans la gestion des sessions ???

Posté : 09 janv. 2012, 17:31
par Shenryu
Ce code, c'est le code de ton fichier index.php c'est bien ça ?

Il faut que tu appelles le session_start() sur ton welcome.php également et que tu testes ensuite si le login est bien rempli sur ta variable de session.
Tu peux faire un var_dump($_SESSION) comme l'a dit xTG. Ça te permettra de savoir ce qu'il y a de stocké dans ta session et de mieux comprendre pourquoi il y a un problème.

Re: Ou est le probleme dans la gestion des sessions ???

Posté : 09 janv. 2012, 17:34
par RTS
ça m affiche ça sur ma page maintenant avec le var dump, donc ça veut dire que ma cession est bien stockée??? mais pourquoi sur un autre pc ma fenetre n est pas bloquée si la session est pas ouverte?

array(1) { ["login"]=> &string(14) "prenom.nom" }

Re: Ou est le probleme dans la gestion des sessions ???

Posté : 09 janv. 2012, 17:35
par RTS
oui c est bien le code de mon index.php

Re: Ou est le probleme dans la gestion des sessions ???

Posté : 09 janv. 2012, 17:39
par Shenryu
Parce que tu ne lui as pas dit de te rediriger sur ton welcome.php mais uniquement sur ton index.php.. Tout du moins je présume.
<?php
session_start();
if (isset($_SESSION['login'])) {
     echo 'Je suis bien connecté';
} else {
     echo 'Je NE suis PAS connecté';
}

Re: Ou est le probleme dans la gestion des sessions ???

Posté : 09 janv. 2012, 17:43
par RTS
ben si dans mon idex.php j ai bien ça :

$_SESSION["login"] = $login ;

header("Location: http://toto.fr/welcome.php") ;
}
//sinon on reste sur l'accueil
else
{
header("Location: http://toto.fr/") ;
}//fin else
}//fin if

que dois je faire alors pour bloquer les pages et qu elles verifient si la session est ouverte ou non???