채택완료

자바스크립트 confirm 에서 "예" 클릭시만 php 실행 시키려면 어떻게 해야 하나요!?

신고 기능을 만들고자..scrap 을 보고 제작해 보았는데요.

테이블 만들고

쿼리까지 작성했는데요,

 

신고하기 버튼을 눌렀을 때

confirm 으로 한번 더 확인하고 싶은데요..

 

그냥 신고하기 버튼을 누르면 바로 DB에 들어가 버리네요-_-;;

쿼리문 위에 confirm 을 넣어도 마찬가지입니다;

 

 

report_popin.php 파일입니다.

Copy
<?php
include_once('./_common.php');

include_once(G5_PATH.'/head.sub.php');

if (!$is_member || $member['mb_level'] <= 1)
{
    $href = './login.php?'.$qstr.'&amp;url='.urlencode('./board.php?bo_table='.$bo_table.'&amp;wr_id='.$wr_id);
    echo '<script> alert_close(\'회원만 접근 가능합니다.\'); top.location.href = \''.str_replace('&amp;', '&', $href).'\'; </script>';
    exit;
}

// 게시글 존재하는지
if(!$write['wr_id'])
    alert_close('게시글이 존재하지 않습니다.');

$sql = " select count(*) as cnt from g5_report
            where rp_udt_id = '{$member['mb_id']}'
            and rp_board = '$bo_table'
            and rp_wr_id = '$wr_id' ";
$row = sql_fetch($sql);

if ($row['cnt'])
{
    echo '
    <script>
    if (confirm(\'이미 신고하신 글 입니다.\'))
        window.close();
    else
        window.close();
    </script>
    <noscript>
    <p>이미 신고하신 글 입니다.</p>
    <a href="./board.php?bo_table='.$bo_table.'&amp;wr_id='.$wr_id.'">돌아가기</a>
    </noscript>';
    exit;
}


$rp_reason = trim($_POST['rp_reason']);
$rp_reason_txt = trim($_POST['rp_reason_txt']);
// 신고할 권한이 있고 게시글이 존재한다면
if ($rp_reason && ($member['mb_level'] > 1))
{
    function console_log($data){
        echo "<script>console.log('PHP_Console:".$data."');</script>";
    }


    $wr = get_write($write_table, $wr_id);
    // 원글이 존재한다면
    if ($wr['wr_id'])
    {
        $rpt_table = 'g5_report';
        $rp_rpt_id = $member['mb_id'];
        $rp_rpt_name = addslashes(clean_xss_tags($board['bo_use_name'] ? $member['mb_name'] : $member['mb_nick']));


        $sql = " insert into $rpt_table
                    set rp_wr_id = '{$wr['wr_id']}',
                         rp_board = '$bo_table',
                         rp_wr_subject = '{$wr['wr_subject']}',
                         rp_wr_content = '{$wr['wr_content']}',
                         rp_udt_id = '{$wr['mb_id']}',
                         rp_udt_name = '{$wr['wr_name']}',
                         rp_rpt_id = '{$member['mb_id']}',
                         rp_rpt_name = '{$member['mb_nick']}',
                         rp_ip = '{$_SERVER['REMOTE_ADDR']}',
                         rp_wr_datetime = '{$wr['wr_datetime']}',
                         rp_datetime = '".G5_TIME_YMDHIS."',
                         rp_ca_name = '{$wr['ca_name']}',
                         rp_reason = '$rp_reason',
                         rp_reason_text = '$rp_reason_txt',
                         rp_wr_link1 = '{$wr['wr_link1']}',
                         rp_wr_link2 = '{$wr['wr_link2']}',
                         rp_wr_file = '{$wr['wr_file']}',
                         rp_1 = '$rp_1',
                         rp_2 = '$rp_2',
                         rp_3 = '$rp_3',
                         rp_4 = '$rp_4',
                         rp_5 = '$rp_5',
                         rp_6 = '$rp_6',
                         rp_7 = '$rp_7',
                         rp_8 = '$rp_8',
                         rp_9 = '$rp_9',
                         rp_10 = '$rp_10'";
        sql_query($sql);
    }
}

delete_cache_latest($bo_table);

echo <<<HEREDOC
<script>
    if (confirm('이 글을 정말 신고 하시겠습니까?'))
        alert('신고 되었습니다.');
    else
        window.close();
    window.close();
</script>
<noscript>
<p>이 글을 정말 신고하시겠습니까?.</p>
<a href="./report_popin_update.php">신고하기</a>
</noscript>
HEREDOC;
?>

 

report_popin.skin.php스킨파일입니다.

Copy
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가

// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
$report_skin_url = G5_SKIN_URL.'/report/basic';
add_stylesheet('<link rel="stylesheet" href="'.$report_skin_url.'/style.css">', 0);
$today = date("Y-m-d H:i:s");

$sql = " select count(*) as cnt from g5_report
            where rp_udt_id = '{$member['mb_id']}'
            and rp_board = '$bo_table'
            and rp_wr_id = '$wr_id' ";
$row = sql_fetch($sql);

if ($row['cnt'])
{
    echo '
    <script>
    if (confirm(\'이미 신고하신 글 입니다.\'))
        window.close();
    else
        window.close();
    </script>
    <noscript>
    <p>이미 신고하신 글 입니다.</p>
    <a href="./board.php?bo_table='.$bo_table.'&amp;wr_id='.$wr_id.'">돌아가기</a>
    </noscript>';
    exit;
}

?>

<!-- 신고 시작 { -->
<div id="report_do" class="new_win mbskin">
    <header id="win_title">
        <img src="<?php echo G5_IMG_URL ?>/logo_60.png" alt="<?php echo $config['cf_title']; ?>" class="win_logo">
        <h1>신고하기</h1>
        <button type="button" onclick="window.close();" class="win_close">
            <img src="<?php echo G5_IMG_URL ?>/btn_close.png" alt="닫기">
        </button>
    </header>
    <form id="freportpopin"name="freportpopin" action="./report_popin_update.php" method="post">
        <input type="hidden" name="rp_wr_id" value="<?php echo $wr_id ?>">
        <input type="hidden" name="rp_board" value="<?php echo $bo_table ?>">
        <input type="hidden" name="rp_wr_subject" value="<?php echo $write['wr_subject'] ?>">
        <input type="hidden" name="rp_wr_content" value="<?php echo strip_tags(trim($write['wr_content'])) ?>">
        <input type="hidden" name="rp_udt_id" value="<?php echo $write['mb_id'] ?>">
        <input type="hidden" name="rp_udt_name" value="<?php echo $write['wr_name'] ?>">
        <input type="hidden" name="rp_rpt_id" value="<?php echo $member['mb_id'] ?>">
        <input type="hidden" name="rp_rpt_name" value="<?php echo $member['mb_nick'] ?>">
        <input type="hidden" name="rp_ip" value="<?php echo $write['wr_ip'] ?>">
        <input type="hidden" name="rp_wr_datetime" value="<?php echo $write['datetime']; ?>">
        <input type="hidden" name="rp_datetime" value="<?php echo $today; ?>">
        <input type="hidden" name="rp_ca_name" value="<?php echo $write['ca_name']; ?>">
        <input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
        <input type="hidden" name="wr_id" value="<?php echo $wr_id ?>">
        <input type="hidden" name="rp_reason" value="">

        <div class="tbl_frm01 tbl_wrap report_wrap">
            <h2>
                <?php echo $write['ca_name'].$write['wr_subject']; // 신고 게시글 제목 ?>
            </h2>
            <div class="rpt_reason">
                <p>※ 아래의 신고 사유를 클릭하여 선택해 주세요</p>
                <ul>
                    <li>
                        <button type="button" class="btn_reason" value="회원비난/비하">회원비난/비하</button>
                    </li>
                    <li>
                        <button type="button" class="btn_reason" value="욕설/비속어">욕설/비속어</button>
                    </li>
                    <li>
                        <button type="button" class="btn_reason" value="타회원 권리침해">타회원 권리침해</button>
                    </li>
                    <li>
                        <button type="button" class="btn_reason" value="사기/회원기만">사기/회원기만</button>
                    </li>
                    <li>
                        <button type="button" class="btn_reason" value="회원정보 무단수집">회원정보 무단수집</button>
                    </li>
                    <li>
                        <button type="button" class="btn_reason" value="비인가 회원모집">비인가 회원모집</button>
                    </li>
                    <li>
                        <button type="button" class="btn_reason" value="비매너 게시글">비매너 게시글</button>
                    </li>
                    <li>
                        <button type="button" class="btn_reason" value="허위사실 유포">허위사실 유포</button>
                    </li>
                    <li>
                        <button type="button" class="btn_reason" value="이용방해·선동">이용방해·선동</button>
                    </li>
                    <li>
                        <button type="button" class="btn_reason" value="협박/스토킹">협박/스토킹</button>
                    </li>
                    <li>
                        <button type="button" class="btn_reason" value="불쾌감 조성">불쾌감 조성</button>
                    </li>
                    <li>
                        <button type="button" class="btn_reason" value="도배글">도배글</button>
                    </li>
                    <li>
                        <button type="button" class="btn_reason" value="운영진 사칭">운영진 사칭</button>
                    </li>
                    <li>
                        <button type="button" class="btn_reason" value="게시판 용도 부적절">게시판 용도 부적절</button>
                    </li>
                    <li>
                        <button type="button" class="btn_reason" value="종교분쟁글">종교분쟁글</button>
                    </li>
                    <li>
                        <button type="button" class="btn_reason" value="정치분쟁글">정치분쟁글</button>
                    </li>
                    <li>
                        <button type="button" class="btn_reason" value="외설적 표현물">외설적 표현물</button>
                    </li>
                    <li>
                        <button type="button" class="btn_reason" value="청소년 유해매체물">청소년 유해매체물</button>
                    </li>
                    <li>
                        <button type="button" class="btn_reason" value="혐오물">혐오물</button>
                    </li>
                    <li>
                        <button type="button" class="btn_reason" value="저작물">저작물</button>
                    </li>
                    <li>
                        <button type="button" class="btn_reason" value="무단광고/홍보">무단광고/홍보</button>
                    </li>
                    <li>
                        <button type="button" class="btn_reason" value="도박·마약권장">도박·마약권장</button>
                    </li>
                    <li>
                        <button type="button" class="btn_reason" value="선교/포교">선교/포교</button>
                    </li>
                    <li>
                        <button type="button" class="btn_reason" value="성별갈등 조장">성별갈등 조장</button>
                    </li>
                    <li>
                        <button type="button" class="btn_reason" value="성희롱">성희롱</button>
                    </li>
                    <li>
                        <button type="button" class="btn_reason" value="지역감정 유발">지역감정 유발</button>
                    </li>
                    <li>
                        <button type="button" class="btn_reason" value="특정집단 비하">특정집단 비하</button>
                    </li>
                    <li>
                        <button type="button" class="btn_reason" value="기타 사유">기타 사유</button>
                    </li>
                </ul>
            </div>
            <div class="rpt_reason_txt">
                <textarea name="rp_reason_txt" cols="4" placeholder="기타 추가할 내용을 작성해주세요." id="rp_reason_txt"></textarea>
            </div>
            <p class="rpt_txt">
                · 정상적인 게시물을 허위신고한 경우 신고자가 제재를 받을 수 있습니다.
            </p>
            <p class="rpt_txt">
                · 신고사유를 보다 자세히 작성해주시면 운영진이 올바른 판단을 하는데 큰 도움이 됩니다.
            </p>
            <div class="win_btn">
                <input type="submit" value="신고하기" class="btn_submit">
                <button type="button" onclick="window.close();" class="btn_close">취소</button>
            </div>
        </div>
    </form>
</div>
<!-- } 스크랩 끝 -->
<script type="text/javascript">
    $(document).ready(function(){
        $('.btn_reason').click(function(){
            $('.btn_reason').removeClass('selected');
            $(this).addClass('selected');

            var rp_reason = $(this).val();
            $('input[name="rp_reason"]').val(rp_reason);
        });

        $('#freportpopin').submit(function(){
            if ($('.btn_reason').hasClass('selected'))
            {
                ;
            } else {
                alert("신고 사유를 선택해 주세요.");
                return false;
            }

            if ($('.selected').length > 1)
            {
                alert("신고 사유를 1개만 선택해 주세요");
                $('.btn_reason').removeClass('selected');
                return false;
            }

        });
    });

</script>

 

 

bbs 파일입니다

Copy
<?php
include_once('./_common.php');

include_once(G5_PATH.'/head.sub.php');

if ($is_guest) {
    $href = './login.php?'.$qstr.'&amp;url='.urlencode('./board.php?bo_table='.$bo_table.'&amp;wr_id='.$wr_id);
    $href2 = str_replace('&amp;', '&', $href);
    echo <<<HEREDOC
    <script>
        alert('회원만 접근 가능합니다.');
        opener.location.href = '$href2';
        window.close();
    </script>
    <noscript>
    <p>회원만 접근 가능합니다.</p>
    <a href="$href">로그인하기</a>
    </noscript>
HEREDOC;
    exit;
}

echo <<<HEREDOC
<script>
    if (window.name != 'win_report') {
        alert('올바른 방법으로 사용해 주십시오.');
        window.close();
    }
</script>
HEREDOC;

if ($write['wr_is_comment'])
    alert_close('코멘트는 신고 할 수 없습니다.');

$wr = get_write($write_table, $wr_id);
if($wr['mb_id'] == $member['mb_id']){
    alert_close('자신의 글은 신고할 수 없습니다.');
}

$sql = " select count(*) as cnt from g5_report
            where rp_rpt_id = '{$member['mb_id']}'
            and rp_board = '$bo_table'
            and rp_wr_id = '$wr_id' ";
$row = sql_fetch($sql);

if ($row['cnt']) {
    echo <<<HEREDOC
    <script>
        alert('이미 신고하신 글 입니다.');
        window.close();
    </script>
    <noscript>
    <p>이미 신고하신 글 입니다.</p>
    <a href="./board.php?bo_table={$bo_table}&amp;wr_id=$wr_id">돌아가기</a>
    </noscript>
HEREDOC;
    exit;
}

$report_skin_path = G5_SKIN_PATH.'/report/basic';
include_once($report_skin_path.'/report_popin.skin.php');

include_once(G5_PATH.'/tail.sub.php');
?>
|

답변 1개 / 댓글 1개

채택된 답변
+20 포인트

신고하기 버튼이 submit으로 되어 있어서 그런것 같은데요. 

버튼으로 만드시고 스크립트쪽에서 submit 보내셔야 할 것 같습니다

답변에 대한 댓글 1개

[code]
$('.btn_submit').click(function(){
if ($('.selected').length > 1) {
alert("신고 사유를 1개만 선택해 주세요");
$('.btn_reason').removeClass('selected');
return false;
} else if ($('.selected').length < 1) {
alert("신고 사유를 선택해 주세요")
return false;
} else {
if (confirm("정말로 신고하시겠습니까?")) {
$('#freportpopin').submit();
alert("신고 되었습니다.");

return true;
window.close();
}
window.close();
}
});
[/code]

이렇게 처리 해도 될까요?
report_popin_update.php 에는
마지막 스크립트를
[code]
echo <<<HEREDOC
<script>
window.close();
</script>
HEREDOC;
[/code]

이렇게 수정했습니다.

동작은 정상작동합니다. 감사합니다.

답변을 작성하려면 로그인이 필요합니다.