[PHP] Zone sécurisé & Sessions

Bonsoir, je souhaitais savoir si la façon dont je différencie un utilisateur connecté d’un non connecté est fiable ou non :

Lorsque l’utilisateur se connecte et que ses identifiants sont valident, j’execute le code suivant :

$_SESSION["PKV"]=1;

En haut de chaque page, je vérifie le code suivant, qui détermine la variable connect. Si connect=0 alors j’affiche le formulaire de connection.

if((isset($_SESSION["PKV"]))&&($_SESSION["PKV"]==1))
{
$connect = 1;
}
else
{
$connect = 0;
}

D’avance merci pour vos avis :wink:

if(isset($_SESSION["PKV"]) && $_SESSION["PKV"]==1)
{$connect = 1;}
else
{$connect = 0;}

C’est correct, mais je crains bien que tu tournes un peu un rond là, surtout si apprès tu vérifies quelle est la valeur de $connect… C’est parfois plus jolie et plus simple de faire un tout bête :

if(isset($_SESSION["PKV"]) AND $_SESSION["PKV"]==1)
{
  // le code si l'user est loggué
}

else
{
  // le code si l'user n'est pas loggué
}

Ou alors dans le sens inverse :

if(isset($_SESSION["PKV"]) AND $_SESSION["PKV"]!=1)
{
  // le code si l'user n'est pas loggué
}

else
{
  // le code si l'user est loggué
}

Pour ce qui est de la sécurité, si c’est un simple utilisateur qui n’a pas trop de pouvoir sur le site (pas d’admin quoi) bah ça passe très bien étant donné que les SESSION sont déjà relativement “sécurisés”. Après pour un accès au pannel d’admin, essaies de faire un vérification à chaque page si le membre à les permissions requises.

C’est mon point de vue, après niveau sécurité sur le net, chacun à son avis ^o) …

Euh soit je suis fatigué, soit ton code va montrer la page pour utilisateur connecté s’il vient sur la page pour la première fois (et donc que la variable de session n’existe pas)

Non, tout dépend de ce que tu mets dans le if isset…

and, à éviter.

Sinon :

$connec = isset($_SESSION["PKV"]) && $_SESSION["PKV"]==1;

Ca revient au même. Donc $connec === true si l’utilisateur est connecté (selon tes critères), false sinon.

Dac merci de l’astuce Sans-nom je n’y avais pas pensé :slight_smile:
Sinon pour ce qui est de l’interet de la variable $connect, c’est que je peux à tout momment dans ma page différencier un menu, ou autres. Par exemple, j’insere le formulaire de connection ou le menu privé de l’utilisateur en fonction de l’état. De plus cette vérification je la fais dans un fichier à part avec notament la connection à la base de donnée. Ce fichier est inséré en haut de chaque page, donc un code du type if() { blabla}else{blabla} n’est pas trop adapté je trouve.

Donc sinon niveau sécurité pas de problème ? Pas moyen par exemple de modifier la valeur de la variable $connect et donc de forcer la connection ? Ou alors de créer soit même la variable de session pour être connecté?

Je suis d’accord, ca dépend des cas, mais si ta 2 pages différentes suivant l’user logué ou non, du genre :


$connec = isset($_SESSION["PKV"]) && $_SESSION["PKV"]==1;

if($connec)
{//toute la page que l'user logué voit}

else
{//toute la page si l'user est délogué}

C’est beaucoup plus pratique. Après si c’est juste un truc du genre :


//la page
if($connec)
{echo 'Bonjour '.$user;}
else
{echo 'veuillez vous connecter';}
//le reste de la page

Là c’est sur c’est plus simple, ca dépend de ce que tu veux faire avec.

Pour ce qui est du AND et OR je trouve ça plus lisible, donc pourquoi serait-ce à éviter? :neutre:

Sinon j’avoue qu’il est plus judicieux de mettre :

if(isset($_SESSION["PKV"]) AND $_SESSION["PKV"]==1)
{
 // le code si l'user est loggué
}

else
{
 // le code si l'user n'est pas loggué
}

Ce n’est pas plus lisible.

C’est juste que cela n’a pas la même priorité.

Ce n’est même pas (en soit) le même opérateur.

amuses toi :

if ( $x = 4 and true ) {
  var_dump($x); // boolean(true)
}

if ( $x = 4 && true ) {
  var_dump($x); // int(4)
}

:sweet: J’avais jamais fais gaffe :ouch:

J’vais m’amuser maintenant à tester :miam: !

Mais donc à quoi sert le AND ???

Repris de perl.

Sert en de (très) rares cas.