Page 1 sur 1

isset, !isset, empty

Posté : 07 sept. 2005, 19:58
par gesualda
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:

Posté : 07 sept. 2005, 21:05
par Cyrano
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 ?

Posté : 08 sept. 2005, 18:25
par gesualda
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:

Posté : 08 sept. 2005, 18:30
par Truc
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.

Posté : 08 sept. 2005, 18:59
par gesualda
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

Posté : 08 sept. 2005, 19:02
par Truc
Voila tu as compris le principe :wink:

Posté : 09 sept. 2005, 00:09
par caledonien
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 :)