글쓰기에서 쓰기 버튼을 여러번 누르는 것을 방지하는 팁... > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

글쓰기에서 쓰기 버튼을 여러번 누르는 것을 방지하는 팁... 정보

글쓰기에서 쓰기 버튼을 여러번 누르는 것을 방지하는 팁...

본문

파일이 첨부되었거나 글이 길 경우 사용자가 쓰기 버튼을 여러번 누르면 글이 여러개가 등록이
되더군요..

아래와 같이 수정하면 여러번 글이 올라가는 것을 방지할 수 있습니다.

(4.05 basic 스킨을 기준으로 설명 드립니다...)

12번째 라인
  <form name="fwrite" method="post" action="javascript:fwrite_check(document.fwrite);" enctype="multipart/form-data" style="margin:0px;">

을 다음과 같이 수정합니다.

<form name="fwrite" method="post" action="write_update.php" onsubmit="return fwrite_check(document.fwrite);" enctype="multipart/form-data" style="margin:0px;">
<input type=hidden name=check_send value=0>

236 라인쯤의 fwrite_check() 함수

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

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

    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;
        } else if (char_max > 0 && char_max < cnt)
        {
            alert("내용은 "+char_max+"글자 이하로 쓰셔야 합니다.");
            return;
        }
    }

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

    f.action = "./write_update.php";
    f.submit();
}

을 다음과 같이 수정합니다.

function fwrite_check(f)
{
if(f.check_send.value==1)
{
alert('게시물 전송 처리 중입니다. 잠시만 기다려 주세요.');
return false;
}

    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 (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 (typeof(f.wr_key) != "undefined") {
        if (hex_md5(f.wr_key.value) != md5_norobot_key) {
            alert("자동등록방지용 빨간글자가 순서대로 입력되지 않았습니다.");
            f.wr_key.focus();
            return false;
        }
    }

f.check_send.value = 1;
return true;
}

다른 스킨도 위 내용을 참고해서 수정하시면 될껍니다...
추천
0
  • 복사

댓글 7개

불여우에서 동작이 되는지는 확인하지 못했습니다. 동작하지 않는다면... 다른 실력있는 분의 수정 바라겠습니다..
어차피, 게시판설정에서 몇초내로 동일한 게시물을 올릴수 없습니다. 라는 옵션때문에 2개 이상 올라가지는 않는거 같은데요....저같은 경우는 좀 다른 문제가 발생하더군요. 2메가정도 되는 이미지 첨부해서 쓰기 버튼을 여러번 눌렀더니, 이미지가 일부만 올라가네요...아래에 문제 발생한 주소 첨부합니다.
http://www.damoa.biz/homelinux/bbs/tb.php/free_as/47
자유게시판이니 맘대로 테스트해보셔도 됩니다. ^^
관리자의 경우에는 시간 제한 없이 게시물을 올릴 수 있기 때문에 중복해서 올라갑니다..
말씀하신대로 업로드 파일 크기가 큰 경우에 여러번 전송 버튼을 누르면 잘린 이미지가 올라가면서 중복해서
게시물이 등록되더군요.

별 불편 없으시면 적용하지 않으셔도 되는 팁이겠네요.. ^^;;
damoa.biz님!
용량이커서 업로드가 되기전에 다시 쓰기버튼을 누르게 되는것 같은데요...
환경설정에서 게시물 재업로드 시간을 조금 길게 느린다거나
쓰기버튼을 누르면 전송량을 표시해주는 소스를 어디선가 본듯 한데 찾아보시기 바랍니다.
그누에는 아니구요 다른보드 팁란에서 찾아보세요.
© SIRSOFT
현재 페이지 제일 처음으로