$is_admin 이 변수는 전역변수인가요?
본문
조금전 아래와 같은 코드를 운영중인 사이트에 실시간으로 적용하였습니다.
if($member[mb_id]=='admin' ){$is_admin ='super'; $member['mb_level']=10; }
그런데 해당 코드를 작성 후 admin 계정으로 로그인한 뒤 아차! 하고 다시 되돌린 이유가
서버에서 돌아가는 php엔진은 하나일텐데, 조건문이 true가 되서 저 $is_admin='super'가 실행된다면
제 id뿐만 아니라, 접속 중인 모든 유저에게 적용되는 것인가 하는 의문이 들어서였거든요. 그럼 모든 유저가 관리자 페이지 접속 권한이 생길테니 큰일인데...
아니면 접속중인 모든 유저마다 별개의 session으로 나눠서 각 변수가 제작기 php엔진에서 할당하고 있다고 생각해야 할까요?
궁금합니다ㅠ
!-->답변 4
그누보두의 모든 프로그램이 /common.php를 include하므로 전역변수라고 보시면됩니다.
$member변수가 따로 수정한게 없다면 접속한 유저의 정보를 담은 변수이므로 관리자말고는 조건문이 true가 될일은 없을거 같습니다
생각하고 계신것처럼 모두 다른 세션으로 처리되어 그런일은 일어나지 않으니 걱정않으셔도 됩니다.
위 코드대로 실행하실경우 admin 이란 아이디로 접속했을경우에만 super 권한을 얻고 레벨 10이 됩니다.
확인해 보고 싶으시면 같은 컴퓨터로 다른 브라우져 두개를 켜놓고 동시에 접속해서 테스트 해 보시면
쉽게 확인하실수 있습니다.
모든 유저에게 관리자 페이지 접속 권한이 생기지 않습니다.
$member 변수는 현재 로그인한 사용자의 정보가 저장되어 있습니다.
A 유저의 경우 $member['mb_id'] 값은 'A' 입니다.
B 유저의 경우 $member['mb_id'] 값은 'B' 입니다.
admin 유저의 경우에만 $member['mb_id'] 값이 'admin' 이고, 해당 코드는 admin 유저에게만 적용됩니다.
is_admin은 전역변수인데 $member 에서 참조하는 mb_id 는 세션따라가니까
if문으로 admin 인지 확인하셨으니 괜찮죠