isset, !isset, empty

Eléphant du PHP | 227 Messages

07 sept. 2005, 19:58

Bonjour à tous,

J'aimerai juste des explications par rapport à la sécurité des sessions.
J'ai mis ce petit bout de script en haut de mes pages qui doivent etre accessible uniquement en cas de session et j'aimerai juste savoir si cela est correct et s'il vaut mieux utiliser:
- empty($_SESSION
- isset($_SESSION
-!isset ($_SESSION
session_start();
if (empty($_SESSION['nom']) || empty($_SESSION['prenom']))
			{
       $_SESSION = array();		
       session_destroy();
       echo "Pas de hacking";
       exit();
			}
Merci pour vos explications.
:oops:

Mammouth du PHP | 19672 Messages

07 sept. 2005, 21:05

Salut,
les fonctions isset() et empty() ont deux significations différentes: isset() vérifie l'existence tandis que empty() vérifie qu'une valeur est assignée. Ainsi, une variable peut retourner trus quand on fait isset($var) et true également si on fait empty($var), ce qui signirierait que la variable $var a été initialisée mais ne contient aucune valeur. Si en revanche isset($var) retourne false, faire ensuite empty($var) va retourner une erreur indiquant que la variable $var n'existe pas.

Est-ce que ces explications te conviennent ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 227 Messages

08 sept. 2005, 18:25

Bonjour Cyrano

Dépasser par le temps et mes obligations pro, je suis obligé de revenir au coup par coup.

J'ai bien saisi la différence, mais alors que signifie le ' ! ' que l'on retrouve dans certain script?
Cela ne signifie t-il pas "différent de" ?
Comme tu me disais: isset($var) signifie controle si existe.
Donc !isset($var) = si différent de .

Désolé, j'ai pas encore le langage courant dans mon expression régulière et j'espère que j'ai réussi à me faire comprendre.

Merci des conseils et explications.

:oops: :oops:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

08 sept. 2005, 18:30

Comme tu le dis: isset($var) controle si $var existe.

parcontre le " ! " est la négation d'un condition

Donc !isset($var) => si $var n'existe pas.

Eléphant du PHP | 227 Messages

08 sept. 2005, 18:59

Merci truc de répondre:

Donc j'en reviens à mon problème de départ.
Il serait plus judicieux de faire:
session_start();
if (!isset($_SESSION['nom']) || !isset($_SESSION['prenom']))
            {
       $_SESSION = array();        
       session_destroy();
       echo "Pas de hacking";
       exit();
            }
Que
session_start();
if (empty($_SESSION['nom']) || empty($_SESSION['prenom']))
            {
       $_SESSION = array();        
       session_destroy();
       echo "Pas de hacking";
       exit();
            }
Je pense que ca devrait coller. Merci

Encore une fois, j'essaye de comprendre plutot que d'applicater et faire betement des copiers-collers

Merci :o

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

08 sept. 2005, 19:02

Voila tu as compris le principe :wink:

Eléphanteau du PHP | 24 Messages

09 sept. 2005, 00:09

Ou alors tout simplement

session_start();
if (!$_SESSION['nom'] && !$_SESSION['prenom']) {
            {
       $_SESSION = array();        
       session_destroy();
       echo "Pas de hacking";
       exit();
            }
j'espère que ca ne ta pas embrouiller :)