예전에 @웹지기 님이 언급하셨던 executeQuery 사용법 문의글 https://xetown.com/qna/727523 을 통해서 executeQuery 알게 되었습니다.
애드온에서 디비를 직접 제어할 수 있는 것이 매우 매력적인데요.
보통 애드온에서는 실행하는 과정에서 executeQuery를 실행하는데요.
애드온에서 버튼을 하나 만들고 onclick 이벤트로 애드온의 executeQuery 를 실행할 수 있는지가 궁금합니다.
버튼을 통해서 특정 상황에서만 이벤트를 발생하고 싶거든요.
제가 해본 방식은 이런 형태인데 이부분이 해결이 안되어서 도움을 요청드립니다.
$end_text_button = '<div style="margin:10px; padding:30px 10px 30px 10px; text-align:center; background-color:#EFEFEF;"><a href="javascript:void(0)" onclick="executeQuery("addons.abc_end_button.updateDocumentExtra", $args)">완료 / 종료 시키기</a></div>';
$output = str_replace("<!--BeforeDocument(", $end_text_button."<!--BeforeDocument(", $output);
웹에서 특정 쿼리를 직접 실행할 수는 없습니다.
만약 가능하다면 아무나 글쓰기, 글삭제 등의 쿼리를 실행할 수 있게 되어 심각한 보안문제가 일어나겠죠?
웹에서 뭔가를 클릭했을 때 (예: 추천, 비추천, 신고) DB와 연동시키려면
우선 XE의 exec_xml, exec_json 함수가 모듈만 지원하므로 애드온이 아니라 모듈이어야 하고,
모듈에서는 지금 클릭한 사람이 해당 작업을 수행할 권한이 있는지 체크한 후 (예: 중복 클릭이라거나...)
쿼리를 실행하거나 에러메시지를 출력하거나 합니다.