Q&A

템플릿 코드에 대해

2022.01.09 09:33
1,039
0
CMS/프레임워크 Rhymix 2.0
개발 언어 PHP 7.4

템플릿 코드를 애용합니다.

 

만약 현재 모듈 명이 abc 이거나 로그인 하지 않은 상태 를 작성하려면 왜 

|| 가 아닌 && 를 사용해야 하나요?

<!--@if(!$is_logged || $mid != "abc")-->

이게 작동을 안해서 지금껏 <!--@if($is_logged || $mid == "abc")--> 해놓고 아래 <!--@else--> 로 작성했었다가

 

오늘 끝장을 보자 하고 수정 했더니 되더라고요 허무해서 글 올려봅니다,,

aierfcgbhn Lv. 2

댓글 6

  • 2022.01.09 09:38 #1642658

    <!--@if(!$is_logged || $mid != "abc")-->

    위 조건도 정상적인 조건문입니다. 로그인한 상태가 아니거나, $mid 값이 abc가 아닌 경우 참이 됩니다.

    만약 로그인한 상태가 아니면서 동시에 mid 값이 abc가 아닌 경우를 체크하고 싶으셨다면 &&가 맞습니다.

  • 2022.01.09 09:39 #1642664
    네 근데 그렇게 하면 내부 코드가 실행되어 버리드라구요, 그래서 수정을 했던건데 일단은 && 가 먹히니 이대로 사용하다가 문제가 생기면 그때 생각해보렵니다~
  • 2022.01.09 09:43 #1642668

    그 예전에 제가 작성한 글을 보면 관리자나 특정 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 앞에는 @ 가 없어서 여쭙습니다
    감사합니다.

  • 2022.01.09 09:45 #1642673

    네. !는 부정을 의미합니다. 즉 위 코드에서 지정한 아이피 제외 수집코드를 작동시키시려면 in_array 앞에 !를 붙이시면 됩니다.

    <!--@if(!in_array($ip, $ban_ip) || $grant->manager)-->

     

    참고로 @는 XE 템플릿 언어에서 if문 등을 구분하기 위해 사용하는 것으로, php에서 @은 오류 표시를 감추는 역할만 할뿐 값을 변경하지 않습니다.(<!--if something--> 같은 주석이 템플릿 문법으로 오해석되는것 방지)

  • 2022.01.09 09:53 #1642684
    마지막 한가지만 더 여쭙고 싶습니다.
    만약 가운데에 == 가 있을때 부정문을 사용하려면 앞에 ! 가 아니라 =앞에 ! 가 맞는거겠죠?
  • 2022.01.09 10:06 #1642688
    == 은 A와 B를 비교했을때을 의미하는데

    !A != B 이렇게 해버리면 A와 B가 다른상태일 경우 가 아닐 경우 라는 복잡하게 바뀌게 됩니다. (아니면 따른 버그가 생기거나요..)

    그러니까 보통은 A != B 이렇게 값이 같다 다르다 할때만 쓰시고

    boolean 형태로 리턴되는 항목들은 !변수명앞에 붙여서 하시면 됩니다.