모바일에서 추천, 비추천 무한반복 되는 문제

모바일에서 추천, 비추천 무한반복 되는 문제

QA

모바일에서 추천, 비추천 무한반복 되는 문제

본문

pc상에서는 추천이나 비추천을 하면 1회로 제한되어 중복 시도하면 이미 추천 또는 비추천 했다고 알림이 뜹니다. 그런데 모바일에서는 한아이디로 추천도 무한대로 계속 가능하고 추천이 누적되있는 상태에서 비추천도  무한대로 가능해 말 그대로 양빵으로 원하는 만큼 추천, 비추천이 찍히네요;; 이거슨 어디를 확인해봐야 하나요?

첨부 이미지는 모바일상에서 한아이디로 추천, 비추천 양빵 누적 가능한 현상입니다.

2106366341_1666772179.8284.jpg

bbs/good.php

 


 
<?php
include_once('./_common.php');
 
run_event('bbs_good_before', $bo_table, $wr_id, $good);
 
@include_once($board_skin_path.'/good.head.skin.php');
 
// 자바스크립트 사용가능할 때
if(isset($_POST['js']) && $_POST['js'] === "on") {
    $error = $count = "";
 
    function print_result($error, $count)
    {
        echo '{ "error": "' . $error . '", "count": "' . $count . '" }';
        if($error)
            exit;
    }
 
    if (!$is_member)
    {
        $error = '회원만 가능합니다.';
        print_result($error, $count);
    }
 
    if (!($bo_table && $wr_id)) {
        $error = '값이 제대로 넘어오지 않았습니다.';
        print_result($error, $count);
    }
 
    $ss_name = 'ss_view_'.$bo_table.'_'.$wr_id;
    if (!get_session($ss_name)) {
        $error = '해당 게시물에서만 추천 또는 비추천 하실 수 있습니다.';
        print_result($error, $count);
    }
 
    $row = sql_fetch(" select count(*) as cnt from {$g5['write_prefix']}{$bo_table} ", FALSE);
    if (!$row['cnt']) {
        $error = '존재하는 게시판이 아닙니다.';
        print_result($error, $count);
    }
 
    if ($good == 'good' || $good == 'nogood')
    {
        if($write['mb_id'] == $member['mb_id']) {
            $error = '자신의 글에는 추천 또는 비추천 하실 수 없습니다.';
            print_result($error, $count);
        }
 
        if (!$board['bo_use_good'] && $good == 'good') {
            $error = '이 게시판은 추천 기능을 사용하지 않습니다.';
            print_result($error, $count);
        }
 
        if (!$board['bo_use_nogood'] && $good == 'nogood') {
            $error = '이 게시판은 비추천 기능을 사용하지 않습니다.';
            print_result($error, $count);
        }
 
        $sql = " select bg_flag from {$g5['board_good_table']}
                    where bo_table = '{$bo_table}'
                    and wr_id = '{$wr_id}'
                    and mb_id = '{$member['mb_id']}'
                    and bg_flag in ('good', 'nogood') ";
        $row = sql_fetch($sql);
        if ($row['bg_flag'])
        {
            if ($row['bg_flag'] == 'good')
                $status = '추천';
            else
                $status = '비추천';
 
            $error = "이미 $status 하신 글 입니다.";
            print_result($error, $count);
        }
        else
        {
            // 추천(찬성), 비추천(반대) 카운트 증가
            sql_query(" update {$g5['write_prefix']}{$bo_table} set wr_{$good} = wr_{$good} + 1 where wr_id = '{$wr_id}' ");
            // 내역 생성
            sql_query(" insert {$g5['board_good_table']} set bo_table = '{$bo_table}', wr_id = '{$wr_id}', mb_id = '{$member['mb_id']}', bg_flag = '{$good}', bg_datetime = '".G5_TIME_YMDHIS."' ");
 
            $sql = " select wr_{$good} as count from {$g5['write_prefix']}{$bo_table} where wr_id = '$wr_id' ";
            $row = sql_fetch($sql);
 
            $count = $row['count'];
           
            run_event('bbs_increase_good_json', $bo_table, $wr_id, $good);
 
            print_result($error, $count);
        }
    }
} else {
    include_once(G5_PATH.'/head.sub.php');
 
    if (!$is_member)
    {
        $href = G5_BBS_URL.'/login.php?'.$qstr.'&url='.urlencode(get_pretty_url($bo_table, $wr_id));
 
        alert('회원만 가능합니다.', $href);
    }
 
    if (!($bo_table && $wr_id))
        alert('값이 제대로 넘어오지 않았습니다.');
 
    $ss_name = 'ss_view_'.$bo_table.'_'.$wr_id;
    if (!get_session($ss_name))
        alert('해당 게시물에서만 추천 또는 비추천 하실 수 있습니다.');
 
    $row = sql_fetch(" select count(*) as cnt from {$g5['write_prefix']}{$bo_table} ", FALSE);
    if (!$row['cnt'])
        alert('존재하는 게시판이 아닙니다.');
 
    if ($good == 'good' || $good == 'nogood')
    {
        if($write['mb_id'] == $member['mb_id'])
            alert('자신의 글에는 추천 또는 비추천 하실 수 없습니다.');
 
        if (!$board['bo_use_good'] && $good == 'good')
            alert('이 게시판은 추천 기능을 사용하지 않습니다.');
 
        if (!$board['bo_use_nogood'] && $good == 'nogood')
            alert('이 게시판은 비추천 기능을 사용하지 않습니다.');
 
        $sql = " select bg_flag from {$g5['board_good_table']}
                    where bo_table = '{$bo_table}'
                    and wr_id = '{$wr_id}'
                    and mb_id = '{$member['mb_id']}'
                    and bg_flag in ('good', 'nogood') ";
        $row = sql_fetch($sql);
        if ($row['bg_flag'])
        {
            if ($row['bg_flag'] == 'good')
                $status = '추천';
            else
                $status = '비추천';
 
            alert("이미 $status 하신 글 입니다.");
        }
        else
        {
            // 추천(찬성), 비추천(반대) 카운트 증가
            sql_query(" update {$g5['write_prefix']}{$bo_table} set wr_{$good} = wr_{$good} + 1 where wr_id = '{$wr_id}' ");
            // 내역 생성
            sql_query(" insert {$g5['board_good_table']} set bo_table = '{$bo_table}', wr_id = '{$wr_id}', mb_id = '{$member['mb_id']}', bg_flag = '{$good}', bg_datetime = '".G5_TIME_YMDHIS."' ");
 
            if ($good == 'good')
                $status = '추천';
            else
                $status = '비추천';
 
            $href = get_pretty_url($bo_table, $wr_id);
           
            run_event('bbs_increase_good_html', $bo_table, $wr_id, $good, $href);
 
            alert("이 글을 $status 하셨습니다.", '', false);
        }
    }
}
 
run_event('bbs_good_after', $bo_table, $wr_id, $good);
 
@include_once($board_skin_path.'/good.tail.skin.php');
 

이 질문에 댓글 쓰기 :

답변 1

good.php 에서 
 

        $sql = " select bg_flag from {$g5['board_good_table']}
                    where bo_table = '{$bo_table}'
                    and wr_id = '{$wr_id}'
                    and mb_id = '{$member['mb_id']}'
                    and bg_flag in ('good', 'nogood') "; <-- 이부분에서 good 또는 nogood 값이 전달되지 않아서 그런것일 것입니다.

view.php 파일에서 

$good_href = './good.php?bo_table='.$bo_table.'&wr_id='.$wr_id.'&good=good'

 

스킨에서는  $good_href 이 링크를 불러 옵니다.

스킨에서 &good=good 이것이 제대로 넘었갔다면 

 

        if ($row['bg_flag'])
        {
            if ($row['bg_flag'] == 'good')
                $status = '추천';
            else
                $status = '비추천';

            $error = "이미 $status 하신 글 입니다.";
            print_result($error, $count);
        }
        else
        {

위의 부분이 실행되었을 것입니다.

스킨에서 &good=good 이부분이 잘 넘어갔는지 확인해 보세요

view.php 파일에서

$scrap_href = '';
$good_href = '';
$nogood_href = '';
if ($is_member) {
    // 스크랩 링크
    $scrap_href = G5_BBS_URL.'/scrap_popin.php?bo_table='.$bo_table.'&amp;wr_id='.$wr_id;

    // 추천 링크
    if ($board['bo_use_good'])
        $good_href = G5_BBS_URL.'/good.php?bo_table='.$bo_table.'&amp;wr_id='.$wr_id.'&amp;good=good';

    // 비추천 링크
    if ($board['bo_use_nogood'])
        $nogood_href = G5_BBS_URL.'/good.php?bo_table='.$bo_table.'&amp;wr_id='.$wr_id.'&amp;good=nogood';
}

요렇게 보여져서 작은 따옴표 안이 공백이라 아래 처럼 해봤더니 아닌가 보네여 ㅠㅠㅋㅋ[초보입니다;]
$good_href = './good.php?bo_table='.$bo_table.'&wr_id='.$wr_id.'&good=good';
$nogood_href = './good.php?bo_table='.$bo_table.'&wr_id='.$wr_id.'&nogood=nogood';

다시 무한검색 루프 입성각이네여;;

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

회원로그인

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