2013-03-31 1 views
0

Я теряю мой переменный $ user, как только я вызываю свою функцию ошибки и включаю файл нижнего колонтитула. Я использую функцию $ user в своем нижнем колонтитуле, чтобы отобразить некоторую информацию, но когда я пошел в var_dump, он просто говорит null. Обратите внимание: я использую структуру базы данных, которую создал кто-то, поэтому запрос может выглядеть странно, но он на 100% функциональен и защищен.PHP потерять переменную после сообщения об ошибке

Это в моем включает файл// функции:

$user_query = $db->query("SELECT * FROM `users` WHERE `id`='$_COOKIE[id]' LIMIT 1"); 
$user = $db->getArray($user_query); 

function error($input){ 

      echo '<div id="error_box"><h1>Ooops!</h1><br> 
      '.$input.'<br /><a href="javascript:history.go(-1)"><b>Back to previous page.</b></a></div>'; 

    require_once('./layout/footer.php'); 
    die; 

} 

и мой файл /layout/footer.php является:

  if (!empty($user['active'])){ 

      //info here 

     } 
     else { 

      //info here 

      var_dump($user); 

     } 
+0

Это не на 100% обеспечено, но те комментарии bash придут ..;) .. и что не так с этим кодом? Правильно, что функция 'error' не знает переменную' $ user', она не входит в область 'error' – dbf

+0

Читайте в области переменных PHP. Переменные, объявленные вне функции, автоматически не видны внутри него. – DCoder

+0

Спасибо! Я упустил часть скрипта, который сделал на нем безопасность, и немного отредактировал его :) – user1888260

ответ

0

$user выходит за рамки в error(). Быстрое исправление - global. Итак:

function error($input){ 
    global $user; 
    // ... 
} 

Может быть, стоит читать на variable scope в целом.

+0

и что было бы постоянным исправлением? :) – dbf

+0

Спасибо за ссылку на область видимости переменной, она помогла, исправлена! – user1888260