Extra Form
PHP PHP 7.1
CMS Rhymix 2.x

안녕하세요,

라이믹스를 사용하고 있고,

애드온을 통하여 아래와 같은 방식으로 이메일의 사전인증을 하도록 하려고 합니다.

 

0) dispMemberSignupForm에 접속시 (afterproc으로) 이메일 인증 완료사실을 담은 session이 없으면 이메일 인증 폼을 표시

1) 회원가입시 먼저 메일주소를 입력하면 인증번호를 발급하고 해당 번호를 session에 저장한뒤

2) 가입자가 메일로 받은 인증번호를 입력하면 session에 저장된 값과 대조하여 이메일 인증 완료사실을 담은 session을 생성한 뒤

3) 해당 세션이 있으면 dispMemberSignupForm을 출력

 

그리고 member 테이블에는 이메일이 저장되지 않도록 하기 위하여 procMemberInsert에 대해서 beforeproc으로 'email_address'의 Context를 unique한 임의의 값으로 대체하도록 하였습니다.

 

이메일은 sha256으로 hash화 하여 별도의 테이블에 저장하여, member 테이블의 레코드와의 연결을 끊어버리고, 다만 회원가입시 중복가입 여부만을 체크하려고 합니다(비밀번호 찾기 기능은 제공하지 않을 예정) 

 

이에 해당 addon의 queries에 별도의 테이블에서 회원이 입력한 이메일 유무를 확인하는 select 쿼리 하나랑, procMemberInsert의 getMessage가 'success_registed'인 경우에 위 별도의 테이블에 이메일 값을 삽입하도록 insert 쿼리 하나를 두었습니다.

 

 그런데 select쿼리는 정상적으로 작동하나, insert 쿼리는 정상적으로 작동하지 않는 것으로 확인되고 있습니다(별도로 에러가 뜨는 것은 없고, 테이블에 삽입이 안됩니다). Addon에서는 insert 쿼리를 날릴 수 없는 것인지 궁금합니다. 

 

장문의 질의 읽어주셔서 대단히 감사드립니다. 

 

  • profile

    1. 어떤 쿼리라도 사용할 수 있습니다. 단, 쿼리 도중 에러가 발생하더라도 그 에러를 화면에 띄우는 로직을 작성하지 않으셨다면 저절로 에러가 뜨지는 않으니, 에러가 뜨지 않더라도 $output을 디버그 찍어보세요. 쿼리문의 XML을 잘못 작성했거나, DB에서 반환한 에러메시지 등이 담겨있을 가능성이 높습니다.

     

    2. 위의 답변과는 별도로, 이메일 인증 폼 등 어떤 화면을 출력하는 기능이 있다면 애드온보다는 모듈로 구현하시는 것을 추천합니다. 애드온에서 화면을 출력하려면 코어의 실행 과정을 억지로 끊어야 하는 경우가 많아서, 에러 추적 등 여러 가지 면에서 무리가 됩니다. (뭔가 출력하고 exit하고 있다면 무조건 잘못하고 있는 겁니다.) 화면 출력은 모듈에서만 하고, 애드온은 모듈이 출력하는 화면을 변형하거나 조작하는 부가적인 역할만 하는 것이 좋습니다. 과거에는 모듈을 만들기 어려워서 무리하게 애드온으로 구현하곤 했지만, XE 모듈 생성기를 사용하면 모듈의 기본 구조를 쉽게 생성할 수 있으니 원하시는 트리거 위치에 애드온과 유사한 코드를 집어넣기만 하면 됩니다.

     

    라이믹스가 존재하는 한, 모듈이 없어지지는 않을 것입니다. 그러나 애드온은 언젠가 살생부에 오를 것입니다.

  • profile ?
    상세한 답변에 깊이 감사드립니다.
    말씀주신 내용과 같이 애드온으로 시작을 하였으나 지나치게 코드가 길어지고 장황해지는 측면이 있어, 모듈 트리거로 작성하는 것을 고려하고 있었으나, 여러가지로 작업이 커져서 주저하고 있었습니다.
    알려주신 모듈 생성기가 큰 도움이 될 것으로 생각됩니다. 대단히 감사드립니다.