[web] xe 뎃글 인증코드 달기(작업중)

예전 제로보드 쓸때, 뎃글에 자꾸 이상한글이 달려서..
인증코드를 만들었다.
XE로 가려니.. 이쪽에도 필요해서 좀 보고서 우선 급한대로 추가했다.
예전게시판은 글쓰기 권한은 나밖에 없어서.. 뎃글에만 달았는데..
수정해서 글쓰기에도 넣고, 글쓰기 제한 풀어야 겠다.

수정파일 : modules/board/skin/xe_board/view.document.html
수정위치 : 167줄 쯤.. 다음과 같이 추가 (사실 이건 내가 필요해서 넣은것.. 블로그 형태에서 뎃글쓰기가 지저분해서 열고 닫게 하려다 보니.. index가 필요해서..)
===============
{@$commentIdx++;}  
===============

168줄 쯤 다음과 같이 수정 (이것도.. 뎃글쓰기를 열고 닫게 하려다 보니 index가 필요해서..)
===============
        <div id=”commentEditor_{$commentIdx}” class=”boardWrite commentEditor” style=”display:none”>
===============

195줄 쯤.. 다음과 같이 수정,추가 (뎃글쓰기 열고 닫게 하려다 보니 index 추가, 인증코드 추가)
===============
        <div id=”commentButton_{$commentIdx}” class=”commentButton tRight” style=”display:none”>      <– 수정
                {$lang->onetime_password} <img src=”/xe/authimg.php” align=”absmiddle” /> <input type=”text” name=”onetime_password” class=”inputTypeText” />  <– 인증코드 추가
            <span class=”button {$btn_class}”><input type=”submit” value=”{$lang->cmd_comment_registration}” /></span>
        </div>
        <div id=”commentOpenButton_{$commentIdx}” class=”commentButton tRight”>   <– 이하 추가(뎃글 열기 버튼)
            <span class=”button {$btn_class}”><input type=”button” value=”{$lang->cmd_comment_registration}” onClick=”openCommentEditor(‘{$commentIdx}’);” /></span>
        </div>
===============

수정파일 : modules/board/board.controller.php
수정위치 : 130줄 쯤.. 다음과 같이 수정 및 추가
===============
            $obj = Context::gets(‘document_srl’,’comment_srl’,’parent_srl’,’content’,’password’,’nick_name’,’nick_name’,’member_srl’,’email_address’,’homepage’,’is_secret’,’notify_message’,’onetime_password’);    // <– onetime_password 추가
            $obj->module_srl = $this->module_srl;

            if( isset($obj->onetime_password) && ($obj->onetime_password != $_SESSION[“ssOTP”]) ) return new Object(-1, ‘msg_invalid_onetime_password’);   // <– 인증코드 판단하는 줄 추가
===============

수정파일 : modules/board/lang/ko.lang.php
수정위치 : 마지막에 추가
===============
    // 인증코드 관련
    $lang->onetime_password = ‘인증코드’;
    $lang->msg_invalid_onetime_password = ‘인증코드가 올바르지 않습니다’;
===============

수정파일 : modules/board/tpl/filter/insert_comment.xml
수정위치 : <form></form> 과 <parameter></parameter> 사이에 추가
===============
  <form>
     …
    <node target=”onetime_password” required=”true” minlength=”1″ maxlength=”4″ />
  </form>
  <parameter>
     …
    <param name=”onetime_password” target=”onetime_password” />
  </parameter>
===============

신규파일 : modules/board/skins/xe_board/js/comment.js  <– 뎃글쓰기 열고 닫기 위한 javascript
===============
function openCommentEditor(idx)
{
        var ce = document.all[“commentEditor_”+idx];
        var cb = document.all[“commentButton_”+idx];
        var ob = document.all[“commentOpenButton_”+idx];

        if(ce&&cb&&ob)
        {
                ce.style.display = “”;
                cb.style.display = “”;
                ob.style.display = “none”;
        }
}
===============

신규파일 : modules/board/skins/xe_board/images/authcode.php   <– 인증코드이미지 생성 파일
===============
<?
    define(‘__ZBXE__’, true);
    require_once(‘../../../../../config/config.inc.php’);
    $oContext = &Context::getInstance();
    $oContext->init();

    header(“Content-type: image/png”);
    $string_a = array(“a”,”b”,”c”,”d”,”e”,”f”,”g”,”h”,”j”,”k”,
        “m”,”n”,”p”,”r”,”s”,”t”,”u”,”v”,”w”,”x”,”y”,”z”,
        “2”,”3″,”4″,”5″,”6″,”7″,”8″,”9″);
    $keys = array_rand($string_a, 4);
    foreach($keys as $n=>$v){
        $string .= $string_a[$v];
    }

    $_SESSION[“ssOTP”]=$string;

    $im     = imagecreatetruecolor(80, 19);
    $orange = imagecolorallocate($im, 220, 210, 60);
    $px     = (imagesx($im) – 7.5 * strlen($string)) / 2;
    imagestring($im, 3, $px, 3, $string, $orange);
    imagepng($im);
    imagedestroy($im);
?>
===============

우선 급한대로 올렸는데..
다 한건지 모르겠다..
나중에 한번 확인해야지..

Loading