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

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

QA

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

본문

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

테이블 만들고

쿼리까지 작성했는데요,

 

신고하기 버튼을 눌렀을 때

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

 

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

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

 

 

report_popin.php 파일입니다.


<?php
include_once('./_common.php');
include_once(G5_PATH.'/head.sub.php');
if (!$is_member || $member['mb_level'] <= 1)
{
    $href = './login.php?'.$qstr.'&url='.urlencode('./board.php?bo_table='.$bo_table.'&wr_id='.$wr_id);
    echo '<script> alert_close(\'회원만 접근 가능합니다.\'); top.location.href = \''.str_replace('&', '&', $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.'&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스킨파일입니다.


<?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.'&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 파일입니다


<?php
include_once('./_common.php');
include_once(G5_PATH.'/head.sub.php');
if ($is_guest) {
    $href = './login.php?'.$qstr.'&url='.urlencode('./board.php?bo_table='.$bo_table.'&wr_id='.$wr_id);
    $href2 = str_replace('&', '&', $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}&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

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

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


$('.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();
			}
		});


이렇게 처리 해도 될까요?
report_popin_update.php 에는
마지막 스크립트를

echo <<<HEREDOC
<script>
	window.close();
</script>
HEREDOC;


이렇게 수정했습니다.

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

답변을 작성하시기 전에 로그인 해주세요.
전체 219
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT