2013-03-31 3 views
0

내 오류 함수를 호출하고 바닥 글 파일을 포함하면 내 varible $ 사용자가 손실됩니다. 일부 바닥 글에 $ 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' 변수를 알지 못한다는 것이 맞습니다. 오류의 범위 안에 있지 않습니다. – dbf

+0

PHP 변수 범위를 읽으십시오. 함수 밖에서 선언 된 변수는 그 안에 자동으로 표시되지 않습니다. – DCoder

+0

감사합니다! 나는 보안을 수행하고 약간 편집 한 스크립트를 생략했습니다. – user1888260

답변

0

$usererror()의 범위를 벗어납니다. 빠른 픽스는 global입니다. 따라서 :

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

일반적으로 variable scope을 읽을 가치가 있습니다.

+0

그리고 영구 수정은 무엇입니까? :) – dbf

+0

가변 범위에 대한 참조 주셔서 감사합니다, 그것은 지금 도움이되었습니다! – user1888260