Extra Form
PHP PHP 5.x
CMS XpressEngine

menu.xml 이란곳에

 

<item>
            <title xml:lang="ko">테스트</title>
            <action >dispNproductAdminItemList</action>

</item>

이렇게 작성이 되어 있는데

            <action >dispNproductAdminItemList&moudule...</action> 

위와같이 특수문자 표시가 들어가면서 값을 수정하려고 하는데요

실행을 해보면 특수문자 &가 %26으로 나오면서 제대로 링크가 표시되지 않습니다.

xml 특수문자 &amp;  요 문자로 해보아도 안되구요

어떤 방법이 있을까요?

 

  • profile

    일반적으로 action 값은 URL에서 ?module=AAA&act=dispAAABBB&document_srl=1234... 의 형태로 사용됩니다. & 문자는 하나의 값과 다른 값을 구분하는 의미이므로, action 값 안에 & 문자가 들어간다면 구분이 무너져서 URL 전체가 깨질 것입니다. 그래서 URL에서 특수문자 인코딩에 사용하는 표준 규칙대로 & => %26으로 처리되는 것입니다. 변수가 자기 자리를 벗어나서 옆에 있는 다른 변수의 자리를 침범하려고 하면 차단하는 것이 XE의 기본적인 보안 정책이니까요.

     

    만약 저기에 &가 들어가야 할 합리적인 이유가 있다 해도, XE는 이미 2년째 개발이 중단되었으므로 이 부분에 대한 기능 변경이나 개선 요청이 받아들여질 가능성은 0%입니다. 따라서 그냥 & 문자를 넣지 않아도 되는 방법으로 구현하는 것이 가장 무난하겠습니다. 예를 들어 별도로 action을 하나 만들고, 그 action을 실행하면 &가 포함된 URL로 포워딩시켜 주는 방법이 있겠습니다. 포워딩은 어디로 하든 상관없으니까요.