Что не так с этой функцией? - PullRequest
2 голосов
/ 07 июня 2009

Я использую эту функцию, чтобы определить, должно ли мое приложение быть онлайн или офлайн:

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

Однако, если в базе данных установлено значение 0, а $online делает = '0', почему error / offline.php не включен для пользователей, чей уровень не равен 1?

Спасибо:)

Ответы [ 3 ]

7 голосов
/ 07 июня 2009

Что такое $online, глобальная переменная? Если это так, вы должны сделать global $online, чтобы получить доступ к нему внутри функции. Прямо сейчас $online является значением по умолчанию null, которое не равно строке "0".

1 голос
/ 07 июня 2009

К точке JW для отладки. Вместо того, чтобы засорять ваш код эхом, просто создайте быстрый класс, такой как Logger или Debug, который вы можете вызывать для регистрации сообщений как эха. Или, что еще лучше, используйте существующий инструмент, такой как http://www.indelible.org/php/Log/guide.html.. Это позволит вам отлаживать в [FirePHP в Firefox] [2] и больше никогда не будет очищать операторы echo. Или просто используйте Firebug напрямую, если вы планируете использовать его только для отладки в итерационном тестировании браузера.

Вы можете очистить их все позже или использовать как регистратор кода, который должен использоваться в большинстве более крупных приложений для регистрации ошибок и представления метрик.

1 голос
/ 07 июня 2009

«Хаос» прав насчет глобальных переменных. Но если вы не уверены, одним из способов отладки чего-либо подобного является добавление операторов «echo» или «die» в разных местах, чтобы увидеть, что происходит в коде. Поместите один в первый оператор «if», чтобы увидеть, насколько далеко он зашел, затем один во втором «if». Отобразите значения переменных, которые вы тестируете, чтобы вы могли понять, почему условия не работают.

...