2009-06-07 8 views
2

J'utilise cette fonction pour déterminer si ma demande devrait être en ligne ou hors ligne:Quel est le problème avec cette fonction?

function online() { 
    if ($online == "0") { 
    if($_SESSION['exp_user']['userlevel'] != "1") { 
      include("error/offline.php"); 
      exit(); 
                } 
         } 
        } 

Cependant, avec la valeur de données mis à 0 dans la base de données et $online ne = « 0 », pourquoi est-erreur /offline.php non inclus pour ceux dont le niveau d'utilisateur n'est pas 1?

Merci :)

Répondre

7

Ce qui est $online, une variable globale? Si oui, vous devez faire global $online pour y accéder dans une fonction. En ce moment $online est une valeur par défaut null, ce qui n'est pas égal à la chaîne "0".

+0

$ en ligne est une variable globale. Comment puis-je le rendre global pour y accéder dans une fonction? – bear

+0

Vous écrivez global $ online dans votre fonction, avant d'utiliser $ online. Cela fait $ en ligne comme il existe dans votre fonction se référer à la même chose que $ en ligne globalement. – chaos

+0

Merci. J'ai appris quelque chose de nouveau aujourd'hui! – bear

1

"Chaos" a raison sur les variables globales. Mais si vous n'êtes pas sûr, une façon de déboguer quelque chose comme ceci est d'ajouter des instructions "echo" ou "die" à différents endroits, pour voir ce qui se passe dans le code. Mettez-en un à l'intérieur de la première instruction "if" pour voir si cela va si loin, puis un dans la deuxième déclaration "if". Écho les valeurs des variables que vous testez, ainsi vous pouvez dire pourquoi les conditions ne fonctionnent pas.

+0

Merci, je débogue habituellement en ajoutant des échos: P – bear

1

Au point de JW pour le débogage. Au lieu de jeter votre code avec des échos, il suffit de créer une classe rapide, telle que Logger ou Debug, que vous pouvez appeler pour enregistrer les messages sous forme d'échos. Ou mieux encore utiliser un outil existant tel que http://www.indelible.org/php/Log/guide.html. Cela vous permettra de déboguer dans [FirePHP dans Firefox] [2] et de ne plus jamais devoir nettoyer les instructions d'écho. Ou utilisez simplement Firebug directement si vous ne prévoyez de l'utiliser que pour le débogage dans les tests d'itération du navigateur.

Vous pouvez les nettoyer plus tard ou les utiliser comme un enregistreur de code qui devrait être utilisé dans la plupart des applications de journalisation des erreurs et de rapport.

Questions connexes