Page 1 sur 1

Vérification des sessions : 2 methodes - laquelle choisir ?

Posté : 11 avr. 2010, 21:55
par visualight
Bonjour,

Actuellement dans mes pages et afin de les sécuriser un tantinet j'utilise en autre une vérification sur les sessions.
Je teste mes sessions comme ceci :
if ((isset($_SESSION['login']) && isset($_SESSION['passw']) && isset($_SESSION['level']) ...)
&& (!empty($_SESSION['login']) && !empty($_SESSION['passw']) && !empty($_SESSION['level']) ...)) {

// Je suis autorisé à voir la page
// Code de ma page

} else {
echo '<script type="text/javascript">window.location= "'.$_SERVER['PHP_SELF'].'?p=login"</script>';
}
Ce que j'aimerai pouvoir faire c'est de remplacer le test des sessions par une fonction qui le fera.
L'implémentation au niveau des pages de mon site en sera simplifiée par simple appel de la fonction : checkSession();
function checkSession() {

    if ((isset($_SESSION['login']) && isset($_SESSION['passw']) && isset($_SESSION['level']) ...)
    && (!empty($_SESSION['login']) && !empty($_SESSION['passw']) && !empty($_SESSION['level']) ...)) {
        // On ne fais rien => on affiche la page
        return true;
    } else {
        echo '<script type="text/javascript">window.location= "'.$_SERVER['PHP_SELF'].'?p=login"</script>';
    }
}
Ma question est donc de savoir si je peux travailler avec une fonction à la place du test de mes sessions dans les pages ... ou est 'il préférable de travailler autrement ?

Merci pour vos réponses,
raph

Re: Vérification des sessions : 2 methodes - laquelle choisir ?

Posté : 11 avr. 2010, 23:02
par Aureusms
Non tu peux vérifier par une fonction cela ne pose pas de problème.
Améliore juste un peu ta fonction : pour cela retourne que False ou True. Les affichages ne les gère pas dans ta fonction mais à l'extérieure de ta fonction :
function checkSession() {
    if (!isset($_SESSION))
	return FALSE;
	
    $tableau_valeur_a_verifier = array ('login', 'level', 'passw');
   
    foreach ($tableau_valeur_a_verifier as $valeur)
	{
		if (!isset($_SESSION[$valeur]))
			returnr FALSE;
		elseif (empty($_SESSION[$valeur])
			return FALSE;
	}

    return true;
}

if (!checkSession())
{
  //on arrête le script entier
  die ('<script type="text/javascript">window.location= "'.$_SERVER['PHP_SELF'].'?p=login"</script>');
  exit;

  // OPTION 2 : moi je préfère
  header ("Location:pageautorise.php");
  die();
  exit;
}

Re: Vérification des sessions : 2 methodes - laquelle choisir ?

Posté : 11 avr. 2010, 23:11
par AB
A mon avis c'est plus simple d'utiliser un fichier extérieur avec un require pour inclure la vérification.

Re: Vérification des sessions : 2 methodes - laquelle choisir ?

Posté : 12 avr. 2010, 10:04
par stealth35
  header ("Location:pageautorise.php");
  die();
  exit;
die + exit ? c'est pour être sur ? :shock:

Re: Vérification des sessions : 2 methodes - laquelle choisir ?

Posté : 12 avr. 2010, 12:01
par visualight
A mon avis c'est plus simple d'utiliser un fichier extérieur avec un require pour inclure la vérification.
Salut AB ;)

C'est déjà le cas ... en effet, j'inclus une page de vérification en require qui vérifie les sessions mais la page ne peut pas être inclue n'importe où.
C'est dû à ma structure et aux paramètres qui en découle ...

C'est pour cela que je pensais opter pour une fonction complémentaire qui m'éviterai de taper 36000 fois le test de l'existence des sessions.

En fait, au départ, je voulais tester mes sessions comme ceci :
function checkSession() {

    if ((isset($_SESSION['login']) && isset($_SESSION['passw']) && isset($_SESSION['level']) ...)
    && (!empty($_SESSION['login']) && !empty($_SESSION['passw']) && !empty($_SESSION['level']) ...)) {
        // On ne fais rien => on affiche la page
        return true;
    } else {
        echo '<script type="text/javascript">window.location= "'.$_SERVER['PHP_SELF'].'?p=login"</script>';
    }
}
Avec un appel dans les pages comme ceci :
<?php
checkSession();

// Code de ma page

?>
Mais il s'avère que ce n'est pas très judicieux ni très sécurisé car il manque un IF pour englober le tout.

Je vais donc opter pour la solution de Aureusms qui propose le test des sessions en fonction avec renvoi de true ou false.
Avec ce système, je peux toujours utiliser une condition IF pour englober le tout.

Merci pour vos réponses,
raph ;)

Re: Vérification des sessions : 2 methodes - laquelle choisir ?

Posté : 12 avr. 2010, 14:10
par AB
Sinon juste pour info

- Tu n'as pas besoin de faire if(isset($var) && !empty($var)) car !empty($var) est plus exigeant que isset($var)

- Et puis si tu veux tester l'existence de plusieurs variables avec isset(), tu peux faire if(isset($var1,$var2,$var3)) ça t'économisera un peu le clavier :) (par contre on ne peut pas faire la même chose avec empty)