Extra Form
PHP PHP 7.4
CMS Rhymix 2.0

모듈을 만드는 중입니다.

DB에 값을 저장하는 입력폼을 하나 만들었습니다.

그리고 실행하면 다음과 같은 오류가 표시됩니다.

40.jpg

위에 기록된 파일의 1050행에는 다음과 같은 내용이 있습니다.

                // display content with message module instance
                $oMessageObject = self::_createErrorMessage(-1, $this->error, $this->httpStatusCode, $this->error_detail, $oModule->get('rx_error_location'));

 

 

이건 이미 오류가 발생한 것이라고 생각되는데..

무엇이 어떻게 잘못된 걸까요?

디버그 기능은 '시스템 설정'에서 켠 상태이고요..

디버그 파일이나 패널에는 별다른 오류는 안보입니다.

아마도 제가 처음 모듈을 만드는 중이라, 뭘 잘 못하고 있는 것 같기는 합니다.

 

일단 입력폼은 다음과 같습니다.

50.jpg

이 폼의 소스는 다음과 같고요.

<load target="css/skin.css" />
<load target="js/skin.js" />

    
<form ruleset="insertTD21test2" name="TD21test2" method="post" action="/">
    <input type="hidden" name="module" value="td21test2" />
    <input type="hidden" name="act" value="procTD21test2Insert" />
    <label>link<input type="text" name="link" /></label>&nbsp;
    <label>title<input type="text" name="title" /></label>&nbsp;
    <label>description<input type="text" name="description" /></label>&nbsp;
    <input type="submit" value="등록" />
</form>

 

Ruleset는 다음과 같습니다.

<?xml version="1.0" encoding="utf-8"?>
<ruleset version="1.5.0">
    <customrules />
    <fields>
        <field name="link" required="true" />
        <field name="title" required="true" />
    </fields>
</ruleset>

 

'procTD21test2Insert'에 대한 컨트롤러 코드는 다음과 같습니다.

    function procTD21test2Insert()
    {
        $obj = Context::getRequestVars();
        $obj->td21test2_srl = getNextSequence();
        executeQuery("td21test2.insertTD21test2", $obj);
    }

 

'insertTD21test2'에 대한 xml쿼리는 다음과 같습니다.

<query id="insertTD21test2" action="insert">
    <tables>
        <table name="td21test2" />
    </tables>
    <columns>
        <column name="td21test2_srl" var="td21test2_srl" notnull="notnull" />
        <column name="title" var="title" notnull="notnull" />
        <column name="link" var="link" notnull="notnull" />
        <column name="description" var="description" />
    </columns>
</query>

 

쫌만 감을 잡으면 될 것 같은데..

잘 안되네요.

 

도와주세요~

  • profile
    procTD21test2Insert 액션을 modules/td21test2/info/module.xml 파일에 선언해주셧나요?

    그쪽 파일 선언된것을 잘 확인해보세요.
  • profile profile
    람보님 고맙습니다.
    잘 나오네요.

    그런데 이런 문제가 디버그 모드를 켜도 문제로 드러나지 않는 것 같은데..
    이런 문제는 어떻게 파악할 수 있을까요?

    람보님은 경험이 많으셔서 척 보고 아시는 것 같습니다만.. ^^
  • profile profile
    모듈 action호출했을때 debug코드를 해당 함수 제일 첫줄에 넣었음에도 불구하고 디버깅이 안찍히고 잘못된요청입니다라는 오류메세지가 나타난다면 해당 함수를 접근조차 못한것이니 해당 module.xml에서 선언 문제로 보고 있습니다.

    대부분 module.xml 에 선언된 함수값대로 해당 함수들을 호출하는 방식이기 때문에 module.xml 에 선언해주는것이 중요하거든요.
  • profile profile

    디버그 패널에는 주로 PHP 오류가 나오지요.

    선언하지 않은 액션을 호출하면 에러화면이 뜨는 것은 PHP 오류가 아니라 라이믹스의 보안정책이 정상적으로 작동한 것이기 때문에, 오류가 기록되지 않습니다.

    물론 모듈을 개발하는 사람 입장에서는 불편하니, "잘못된 요청입니다"처럼 두루뭉술하고 불친절한 에러메시지를 개선하는 작업은 꾸준히 진행하고 있습니다. 단, 에러메시지를 너무 친절하게 쓰면 일부러 act 변수를 조작해가며 침입 경로를 찾는 해커에게 불필요하게 많은 정보를 노출할 수 있기 때문에 수위조절(?)이 쉽지 않네요.