비회원으로 글쓰기를 하면 $wr_id를 사용하지 않습니다란 에러가 나는데요.. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

비회원으로 글쓰기를 하면 $wr_id를 사용하지 않습니다란 에러가 나는데요.. 정보

비회원으로 글쓰기를 하면 $wr_id를 사용하지 않습니다란 에러가 나는데요..

본문

그누보드를 처음 사용해 봤는데 머리 좀 많이 아프네요. 역시 뭐든지 처음은 어렵네요..각설하고...
관리자로 글을 쓰면 잘 써지는데 비회원으로 글쓰기를 하면 글쓰기에는 wr_id를 사용하지 않습니다란 에러가 납니다.
그래서 write.skin.php 의
<input type=hidden name=wr_id    value="<?=$wr_id?>">
이부분을 소스보기해도 value에는 아무 값도 들어가 있지 않은데... 계속 같은 에러가 반복을 합니다.
도데체 왜 이럴까요?
답변 좀 부탁 드립니다.


--------------------write.skin.php--------------------------------------------
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

if ($is_dhtml_editor) {
    include_once("$g4[path]/lib/cheditor4.lib.php");
    echo "<script src='$g4[cheditor4_path]/cheditor.js'></script>";
    echo cheditor1('wr_content', '100%', '250');
}

/*
subject : 주문사항
wr_1 : 상품종류
wr_2 : 회사명
wr_3 : 담당자
wr_4 : 연락처
wr_5 : 휴대폰 번호
wr_6 : 이메일
*/
?>

<div style="height:14px; line-height:1px; font-size:1px;"> </div>

<style type="text/css">
.write_head { height:30px; text-align:center; color:#8492A0; }
.field { border:1px solid #ccc; }
</style>

<script language="javascript">
// 글자수 제한
var char_min = parseInt(<?=$write_min?>); // 최소
var char_max = parseInt(<?=$write_max?>); // 최대
</script>

<form name="fwrite" method="post" onsubmit="return fwrite_submit(this);" enctype="multipart/form-data" style="margin:0px;">
<input type=hidden name=null>
<input type=hidden name=w        value="<?=$w?>">
<input type=hidden name=bo_table value="<?=$bo_table?>">
<input type=hidden name=wr_id    value="<?=$wr_id?>">
<input type=hidden name=sca      value="<?=$sca?>">
<input type=hidden name=sfl      value="<?=$sfl?>">
<input type=hidden name=stx      value="<?=$stx?>">
<input type=hidden name=spt      value="<?=$spt?>">
<input type=hidden name=sst      value="<?=$sst?>">
<input type=hidden name=sod      value="<?=$sod?>">
<input type=hidden name=page     value="<?=$page?>">

<? $title_msg = '언제든지 신청하시면 최대한 빠른 시간내로 처리해 드립니다.' ?>
<table width="<?=$width?>" align=center cellpadding=0 cellspacing=0><tr><td>


<div style="border:1px solid #ddd; height:34px; background:url(<?=$board_skin_path?>/img/title_bg.gif) repeat-x;">
<div style="font-weight:bold; font-size:12px; margin:7px 0 0 10px; color:777777;">:: <?=$title_msg?> ::</div>
</div>
<div style="height:3px; background:url(<?=$board_skin_path?>/img/title_shadow.gif) repeat-x; line-height:1px; font-size:1px;"></div>


<table width="100%" border="0" cellspacing="0" cellpadding="0">
<colgroup width=90>
<colgroup width=''>
<tr><td colspan="2" style="background:url(<?=$board_skin_path?>/img/title_bg.gif) repeat-x; height:3px;"></td></tr>

<?
$option = "";
$option_hidden = "";
if ($is_notice || $is_html || $is_secret || $is_mail) {
    $option = "";
    if ($is_notice) {
        $option .= "<input type=checkbox name=notice value='1' $notice_checked>공지 ";
    }

    if ($is_html) {
        if ($is_dhtml_editor) {
            $option_hidden .= "<input type=hidden value='html1' name='html'>";
        } else {
            $option .= "<input onclick='html_auto_br(this);' type=checkbox value='$html_value' name='html' $html_checked><span class=w_title>html</span> ";
        }
    }

    if ($is_secret) {
        if ($is_admin || $is_secret==1) {
            $option .= "<input type=checkbox value='secret' name='secret' checked><span class=w_title>비밀글</span> ";
        } else {
            $option_hidden .= "<input type=hidden value='secret' name='secret'>";
        }
    }

    if ($is_mail) {
        $option .= "<input type=checkbox value='mail' name='mail' $recv_email_checked>답변메일받기 ";
    }
}

echo $option_hidden;
if ($option) {
?>
<?
 if($member[mb_name] && $write[wr_3] == '' && $write[wr_4] == '' && $write[wr_5] == '' && $write[wr_6] == '') {
 $write[wr_3] = $member[mb_name];
 $write[wr_4] = $member[mb_tel];
 $write[wr_5] = $member[mb_hp];
 $write[wr_6] = $member[mb_email];
 }
?>
<tr>
    <td class=write_head>옵 션</td>
    <td><?=$option?></td></tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>
<? } ?>

<? if($is_admin) { ?>
<tr>
    <td class=write_head>상태</td>
    <td>
 <input type="radio" name=wr_10 value="" <?if($write[wr_10]=="")echo"checked";?>>신청
 <input type="radio" name=wr_10 value="1"<?if($write[wr_10]=="1")echo"checked";?>>완료
 </td>
</tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>

<? } ?>
<? if ($is_category) { ?>
<tr>
    <td class=write_head>분 류</td>
    <td><select name=ca_name required itemname="분류"><option value="">선택하세요<?=$category_option?></select></td></tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>
<? } ?>

<tr>
    <td class=write_head>주문 사항</td>
    <td><input class='ed' style="width:20%;" name=wr_subject id="wr_subject" itemname="제목" required value="<?=$subject?>">  <font color='777777'>예. 몰딩,데코타일몰딩,석고비드 등</font></td></tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>


<tr>
    <td class=write_head>상품 종류</td>
    <td><input class='ed' style="width:20%;" name=wr_1 id="wr_1" itemname="상품 종류" required value="<?=$write[wr_1]?>"></td></tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>

<tr>
    <td class=write_head>회사명</td>
    <td><input class='ed' style="width:20%;" name=wr_2 id="wr_2" itemname="회사명" required value="<?=$write[wr_2]?>"></td></tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>


<tr>
    <td class=write_head>담당자</td>
    <td><input class='ed' style="width:20%;" name=wr_3 id="wr_3" itemname="담당자" required value="<?=$write[wr_3]?>"></td></tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>


<tr>
    <td class=write_head>연락처</td>
    <td><input class='ed' style="width:20%;" name=wr_4 id="wr_4" itemname="연락처" required value="<?=$write[wr_4]?>"></td></tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>

<tr>
    <td class=write_head>휴대폰 번호</td>
    <td><input class='ed' style="width:20%;" name=wr_5 id="wr_5" itemname="휴대폰 번호" required value="<?=$write[wr_5]?>"></td></tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>

<tr>
    <td class=write_head>이메일</td>
    <td><input class='ed' maxlength=100 size=50 name=wr_6 email itemname="이메일" value="<?=$write[wr_6]?>"></td></tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>


<tr>
    <td class=write_head style='padding-left:20px;'>내용</td>
    <td style='padding:5 0 5 0;'>
        <? if ($is_dhtml_editor) { ?>
            <?=cheditor2('wr_content', $content);?>
        <? } else { ?>
        <table width=100% cellpadding=0 cellspacing=0>
        <tr>
            <td width=50% align=left valign=bottom>
                <span style="cursor: pointer;" onclick="textarea_decrease('wr_content', 10);"><img src="<?=$board_skin_path?>/img/up.gif"></span>
                <span style="cursor: pointer;" onclick="textarea_original('wr_content', 10);"><img src="<?=$board_skin_path?>/img/start.gif"></span>
                <span style="cursor: pointer;" onclick="textarea_increase('wr_content', 10);"><img src="<?=$board_skin_path?>/img/down.gif"></span></td>
            <td width=50% align=right><? if ($write_min || $write_max) { ?><span id=char_count></span>글자<?}?></td>
        </tr>
        </table>
        <textarea id="wr_content" name="wr_content" class=tx style='width:100%; word-break:break-all;' rows=10 itemname="내용" required
        <? if ($write_min || $write_max) { ?>onkeyup="check_byte('wr_content', 'char_count');"<?}?>><?=$content?></textarea>
        <? if ($write_min || $write_max) { ?><script language="javascript"> check_byte('wr_content', 'char_count'); </script><?}?>
        <? } ?>
    </td>
</tr>
<tr><td colspan=2 height=1 bgcolor=#dddddd></td></tr>
<!--
<? if ($is_link) { ?>
<? for ($i=1; $i<=$g4[link_count]; $i++) { ?>
<tr>
    <td class=write_head>링크 #<?=$i?></td>
    <td><input type='text' class='ed' size=50 name='wr_link<?=$i?>' itemname='링크 #<?=$i?>' value='<?=$write["wr_link{$i}"]?>'></td>
</tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>
<? } ?>
<? } ?>
--->
<? if($is_admin) { ?>
<tr>
 <td></td>
 <td style='padding:10 0 0 0;'><font style='color:777777;'>* 관리자는 완료된 파일에 한하여 <img src='<?=$board_skin_path?>/img/btn_file_add.gif' align=absmiddle>를 클릭 후, <u>2번째 첨부파일에 견적서를 첨부</u>하여 주시기 바랍니다.</font></td>
</tr>
<? } ?>
<? if ($is_file) { ?>
<tr>
    <td class=write_head>
        <table cellpadding=0 cellspacing=0>
        <tr>
            <td class=write_head style="padding-top:10px; line-height:20px;">
                파일첨부<br>
    <? if($is_admin) { ?>
                <span onclick="add_file();" style="cursor:pointer;"><img src="<?=$board_skin_path?>/img/btn_file_add.gif"></span>
                <span onclick="del_file();" style="cursor:pointer;"><img src="<?=$board_skin_path?>/img/btn_file_minus.gif"></span>
    <? } ?>
            </td>
        </tr>
        </table>
    </td>
    <td style='padding:5 0 5 0;'><table id="variableFiles" cellpadding=0 cellspacing=0></table><?// print_r2($file); ?>
        <script language="JavaScript">
        var flen = 0;
        function add_file(delete_code)
        {
            var upload_count = <?=(int)$board[bo_upload_count]?>;
            if (upload_count && flen >= upload_count)
            {
                alert("이 게시판은 "+upload_count+"개 까지만 파일 업로드가 가능합니다.");
                return;
            }

            var objTbl;
            var objRow;
            var objCell;
            if (document.getElementById)
                objTbl = document.getElementById("variableFiles");
            else
                objTbl = document.all["variableFiles"];

            objRow = objTbl.insertRow(objTbl.rows.length);
            objCell = objRow.insertCell(0);

            objCell.innerHTML = "<input type='file' class='ed' name='bf_file[]' title='파일 용량 <?=$upload_max_filesize?> 이하만 업로드 가능'>";
            if (delete_code)
                objCell.innerHTML += delete_code;
            else
            {
                <? if ($is_file_content) { ?>
                objCell.innerHTML += "<br><input type='text' class='ed' size=50 name='bf_content[]' title='업로드 이미지 파일에 해당 되는 내용을 입력하세요.'>";
                <? } ?>
                ;
            }

            flen++;
        }

        <?=$file_script; //수정시에 필요한 스크립트?>

        function del_file()
        {
            // file_length 이하로는 필드가 삭제되지 않아야 합니다.
            var file_length = <?=(int)$file_length?>;
            var objTbl = document.getElementById("variableFiles");
            if (objTbl.rows.length - 1 > file_length)
            {
                objTbl.deleteRow(objTbl.rows.length - 1);
                flen--;
            }
        }
        </script></td>
</tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>
<? } ?>

<? if ($is_trackback) { ?>
<tr>
    <td class=write_head>트랙백주소</td>
    <td><input class='ed' size=50 name=wr_trackback itemname="트랙백" value="<?=$trackback?>">
        <? if ($w=="u") { ?><input type=checkbox name="re_trackback" value="1">핑 보냄<? } ?></td>
</tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>
<? } ?>

<? if ($is_guest) { ?>
<tr>
    <td class=write_head><img id='kcaptcha_image' border='0' width=120 height=60 onclick="imageClick();" style="cursor:pointer;" title="글자가 잘안보이는 경우 클릭하시면 새로운 글자가 나옵니다."></td>
    <td><input class='ed' type=input size=10 name=wr_key itemname="자동등록방지" required>  왼쪽의 글자를 입력하세요.</td>
</tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>
<? } ?>

</table>

<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
    <td width="100%" align="center" valign="top" style="padding-top:30px;">
        <input type=image id="btn_submit" src="<?=$board_skin_path?>/img/btn_write.gif" border=0 accesskey='s'> 
        <? if($is_admin) { ?><a href="./board.php?bo_table=<?=$bo_table?>"><img id="btn_list" src="<?=$board_skin_path?>/img/btn_list.gif" border=0></a><? } ?></td>
</tr>
</table>

</td></tr></table>
</form>

<script type="text/javascript"> var md5_norobot_key = ''; </script>
<script type="text/javascript" src="<?="$g4[path]/js/prototype.js"?>"></script>
<script type="text/javascript">
function imageClick() {
    var url = "<?=$g4[bbs_path]?>/kcaptcha_session.php";
    var para = "";
    var myAjax = new Ajax.Request(
        url,
        {
            method: 'post',
            asynchronous: true,
            parameters: para,
            onComplete: imageClickResult
        });
}

function imageClickResult(req) {
    var result = req.responseText;
    var img = document.createElement("IMG");
    img.setAttribute("src", "<?=$g4[bbs_path]?>/kcaptcha_image.php?t=" + (new Date).getTime());
    document.getElementById('kcaptcha_image').src = img.getAttribute('src');

    md5_norobot_key = result;
}

<? if (!$is_member) { ?>Event.observe(window, "load", imageClick);<? } ?>

<?
// 관리자라면 분류 선택에 '공지' 옵션을 추가함
if ($is_admin)
{
    echo "
    if (typeof(document.fwrite.ca_name) != 'undefined')
    {
        document.fwrite.ca_name.options.length += 1;
        document.fwrite.ca_name.options[document.fwrite.ca_name.options.length-1].value = '공지';
        document.fwrite.ca_name.options[document.fwrite.ca_name.options.length-1].text = '공지';
    }";
}
?>

with (document.fwrite)
{
    if (typeof(wr_name) != "undefined")
        wr_name.focus();
    else if (typeof(wr_subject) != "undefined")
        wr_subject.focus();
    else if (typeof(wr_content) != "undefined")
        wr_content.focus();

    if (typeof(ca_name) != "undefined")
        if (w.value == "u")
            ca_name.value = "<?=$write[ca_name]?>";
}

function html_auto_br(obj)
{
    if (obj.checked) {
        result = confirm("자동 줄바꿈을 하시겠습니까?\n\n자동 줄바꿈은 게시물 내용중 줄바뀐 곳을<br>태그로 변환하는 기능입니다.");
        if (result)
            obj.value = "html2";
        else
            obj.value = "html1";
    }
    else
        obj.value = "";
}

function fwrite_submit(f)
{
    var s = "";
    if (s = word_filter_check(f.wr_subject.value)) {
        alert("제목에 금지단어('"+s+"')가 포함되어있습니다");
        return false;
    }

    if (s = word_filter_check(f.wr_content.value)) {
        alert("내용에 금지단어('"+s+"')가 포함되어있습니다");
        return false;
    }

    if (document.getElementById('char_count')) {
        if (char_min > 0 || char_max > 0) {
            var cnt = parseInt(document.getElementById('char_count').innerHTML);
            if (char_min > 0 && char_min > cnt) {
                alert("내용은 "+char_min+"글자 이상 쓰셔야 합니다.");
                return false;
            }
            else if (char_max > 0 && char_max < cnt) {
                alert("내용은 "+char_max+"글자 이하로 쓰셔야 합니다.");
                return false;
            }
        }
    }

    <?
    if ($is_dhtml_editor) echo cheditor3('wr_content');
    ?>

    if (document.getElementById('tx_wr_content')) {
        if (!ed_wr_content.outputBodyText()) {
            alert('내용을 입력하십시오.');
            ed_wr_content.returnFalse();
            return false;
        }
    }

    if (typeof(f.wr_key) != 'undefined') {
        if (hex_md5(f.wr_key.value) != md5_norobot_key) {
            alert('자동등록방지용 글자가 제대로 입력되지 않았습니다.');
            f.wr_key.select();
            f.wr_key.focus();
            return false;
        }
    }

    document.getElementById('btn_submit').disabled = true;
    document.getElementById('btn_list').disabled = true;

    <?
    if ($g4[https_url])
        echo "f.action = '$g4[https_url]/$g4[bbs]/write_update.php';";
    else
        echo "f.action = './write_update.php';";
    ?>

    return true;
}
</script>

<script language="JavaScript" src="<?="$g4[path]/js/board.js"?>"></script>
<script language="JavaScript"> window.onload=function() { drawFont(); } </script>



  • 복사

댓글 전체

소스중 하단부에

document.getElementById('btn_list').disabled = true;

위의 부분을

<? if($is_admin) { ?>document.getElementById('btn_list').disabled = true;<? } ?>

위의 구문으로 바꾸셔야 합니다 ^^

놓치기 쉬운 오류입니다..
답변 감사드립니다.
 
아..그런데 죄송한데 이유도 좀 알려 주시면 안되실런지요?

요부분은 document.getElementById('btn_list').disabled = true; 목록보기 버튼을 비활성화 시키는 스크립트인데 이거랑 $wr_id 를 사용한다고 경고창을 띄우는 거랑 무슨 상관이 있는지 모르겠습니다.
분명 $wr_id 에는 아무 값도 들어가 있지 않은데 말입니다...
바쁘시겠지만 한수 부탁드립니다.
우선.. 목록버튼을 관리자이면~으로 조건을 걸어놓으셨구요..

그리고 글쓰기 버튼 클릭시에 function fwrite_submit 이 함수가 작동을 하게 되는데요..

현재 비회원이 글을 작성하면 관리자가 아니므로 document.getElementById('btn_list') 라는 객체는 존재하지 않습니다^^

submit 할때 fwrite_submit 함수를 실행하다가 앞서 말씀드린 구분에 객체가 존재하지 않아 스트립트 오류가 발생하게 되는데.. 스크립트가 중지되고 action을 실행하게 됩니다^^;

하지만 그 밑을 보시면 echo "f.action = './write_update.php';"; 으로 오류발생 후 action이 있으니까 write_update.php로 submit을 하는게 아니라 자신에게 submit하게 되는거죠..

아마 write.php페이지로 아는데 자신에게 submit하니까 /bbs/write.php 파일 내용중 isset($wr_id){오류출력} 이라는 구문이 있을것인데 wr_id hidden value가 없다고 하더라도 isset은 변수자체 존재여부를 따지므로 그 오류에 걸리는 것이구요^^;

말이 길어졌는데;; 결국엔 단순히 submit을 위해 스트립트를 실행하다가 action값을 얻기전에 오류가 나고 스스로 서브밋되어.. 게시물번호 변수가 존재하니까 발생하는 오류입니다~

도움이 되었으면 좋겠네요^^
아.. 그렇군요... 객체가 없어지는 군요..
친절한 답변 감사드립니다. 열병님..
많은 도움이 되었습니다...
역시 미리 단정하고 소스를 보는 것은 안좋은 습관이네요...
알려 주셨는데도 그 이유를 보질 못했으니...
© SIRSOFT
현재 페이지 제일 처음으로