php 논리연산자 질문드립니다.
본문
특정 페이지를 특정 회원과 총 관리자만 접근가능하게 하려는데요.
아래처럼 해줘봤는데 test01 회원이 접근이 되지 않더라구요.
|| 이 연산자가 논리식 중에서 하나라도 참이면 참을 반환함. 이라고 봤는데. 왜 안될까요;
if (!$is_admin || $config[cf_4] != 'test01') {
alert_close("접근 권한이 없습니다.");
}
이렇게 하면 당연히 되구요.
if ($config[cf_4] != 'test01') {
alert_close("접근 권한이 없습니다.");
}
!-->!-->
답변 2
관리자만 허용
if($is_admin)
특정회원만 허용
if($member['mb_id'] == 'test01')
관리자와 특정회원만 허용
if($is_admin || $member['mb_id'] == 'test01')
추가로 설명드리자면 현재 $config[cf_4] 여분필드에 test01을 넣었는데
이게 만약 추가되거나 아이디가 바뀌게되면 if문을 전부 수정해야하기 때문에
$is_member , $is_admin 과 비슷한 방식으로 특정 구분할 수 있는 변수를 만들어서
추가하는 것이 도움됩니다.
예를들어
if($is_admin || $is_sub_admin)
이런식으로 $is_sub_admin 의 변수를 생성해서 해당 아이디를 추가해놓는다면
회원이 바뀌어도 계속 적용할 수 있습니다.
$config[cf_4] 에 등록된 값(회원아이디) 일때만 허용하고자 할때는
if ($config[cf_4] != $member['mb_id']) {
alert_close("접근 권한이 없습니다.");
exit;
}
관리자와 $config[cf_4] 에 등록된 값(회원아이디) 일때만 허용하고자 할때는
if (!($is_admin || $config[cf_4] == $member['mb_id'])) {
alert_close("접근 권한이 없습니다.");
exit;
}