템플릿 코드에 대해
CMS/프레임워크 | Rhymix 2.0 |
---|---|
개발 언어 | PHP 7.4 |
템플릿 코드를 애용합니다.
만약 현재 모듈 명이 abc 이거나 로그인 하지 않은 상태 를 작성하려면 왜
|| 가 아닌 && 를 사용해야 하나요?
<!--@if(!$is_logged || $mid != "abc")-->
이게 작동을 안해서 지금껏 <!--@if($is_logged || $mid == "abc")--> 해놓고 아래 <!--@else--> 로 작성했었다가
오늘 끝장을 보자 하고 수정 했더니 되더라고요 허무해서 글 올려봅니다,,
aierfcgbhn
Lv. 2
댓글 6
<!--@if(!$is_logged || $mid != "abc")-->
위 조건도 정상적인 조건문입니다. 로그인한 상태가 아니거나, $mid 값이 abc가 아닌 경우 참이 됩니다.
만약 로그인한 상태가 아니면서 동시에 mid 값이 abc가 아닌 경우를 체크하고 싶으셨다면 &&가 맞습니다.
그 예전에 제가 작성한 글을 보면 관리자나 특정 ip 배열의 경우 접속정보 수집을 못하도록 해뒀는데요. 이때 이 부분을 xe 포럼에서 복붙했거든요,,
php
{@
$ban_ip = array("172.30.1", "*.*.*");
$ip = getenv('REMOTE_ADDR');
$ips = explode(".", $ip);
$ip = $ips[0].".".$ips[1].".".$ips[2];
}
html
<!--@if(in_array($ip, $ban_ip) || $grant->manager)-->
<!--@else-->
이 부분에서 in_array 를 앞에 ! 붙이면 부정이 되는건가요? in_array 앞에는 @ 가 없어서 여쭙습니다
감사합니다.
네. !는 부정을 의미합니다. 즉 위 코드에서 지정한 아이피 제외 수집코드를 작동시키시려면 in_array 앞에 !를 붙이시면 됩니다.
<!--@if(!in_array($ip, $ban_ip) || $grant->manager)-->
참고로 @는 XE 템플릿 언어에서 if문 등을 구분하기 위해 사용하는 것으로, php에서 @은 오류 표시를 감추는 역할만 할뿐 값을 변경하지 않습니다.(<!--if something--> 같은 주석이 템플릿 문법으로 오해석되는것 방지)
만약 가운데에 == 가 있을때 부정문을 사용하려면 앞에 ! 가 아니라 =앞에 ! 가 맞는거겠죠?
!A != B 이렇게 해버리면 A와 B가 다른상태일 경우 가 아닐 경우 라는 복잡하게 바뀌게 됩니다. (아니면 따른 버그가 생기거나요..)
그러니까 보통은 A != B 이렇게 값이 같다 다르다 할때만 쓰시고
boolean 형태로 리턴되는 항목들은 !변수명앞에 붙여서 하시면 됩니다.