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

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

QA

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

답변 1

본문

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';

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

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 95
© SIRSOFT
현재 페이지 제일 처음으로