그누보드,탑빌더 사용중입니다. 팝업 쿠키이용한 팝업 실행 종료 문의드립니다.

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
그누보드,탑빌더 사용중입니다. 팝업 쿠키이용한 팝업 실행 종료 문의드립니다.

QA

그누보드,탑빌더 사용중입니다. 팝업 쿠키이용한 팝업 실행 종료 문의드립니다.

본문

어제 팝업 에러메시지는 set_cookie 함수가  common.js에서 선언 되었다가 popup에서는 실행이 되지 않는 문제로 인해 Q&A 질문을 올리고 도움을 받고

popup_control.js에서 set_cookie,get_cookie 등등 선언을 해주어서 문제 해결은 되었습니다.,

실제로 컴퓨터에 만들어진 쿠키도 확인 하였습니다.

 

하지만, popup.lib.php 와 viewpop.skin.php 에서 popup을 실행할 때

get_cookie 를 불러와서 비교하는 스크립트가 없는듯 한데요.. 혹시 이부분을

어디를 참고해야하며, 혹시 수정하시어 사용하시는 분 계시면 조언 부탁드립니다.

버젼은 //    탑빌더

- 개발날짜 : 2009년 09월 18일   
//    - 저작권 : topschool
//    - 개발자 : 정진호
 

 

이시고 basic 버젼입니다.  

아래는 phpup.lib.php 입니다.


<?
if (!defined('_GNUBOARD_')) exit;
function get_popup_contents($content){
    global $zindex, $rs;
    $content = str_replace("{zindex}", $zindex, $content);
    $content = str_replace("{title}", $rs[po_subject], $content);
    $content = str_replace("{content}", $rs[po_content], $content);
    $content = str_replace("{expirehours}", $rs[po_expirehours], $content);
    $content = str_replace("{id}", $rs[po_id], $content);
    $content = str_replace("{po_left}", $rs[po_left], $content);
    $content = str_replace("{po_top}", $rs[po_top], $content);
    $content = str_replace("{po_width}", $rs[po_width], $content);
    $content = str_replace("{po_height}", $rs[po_height], $content);
    
    if($rs[po_scrollbar] == "1"){
        $content = str_replace("{overflow}", "auto", $content);
    }else{
        $content = str_replace("{overflow}", "hidden", $content);
    }
    return $content;
}

// 팝업창
$zindex = 1000000;
$popcnt = 1;
$jscnt = 1;
$sql = "select * from $g4[popup_table] where po_start_date < '$g4[time_ymdhis]' and po_end_date > '$g4[time_ymdhis]' and po_openchk = '1'";
$result = sql_query($sql);
if ($result) {
    while($rs = sql_fetch_array($result)) {
        if ( ( $rs[po_dir] == $_SERVER[PHP_SELF] || !$rs[po_dir] || ($bo_table == $rs[po_dir] && strstr($_SERVER[PHP_SELF],"/bbs/board.php")) ) && !strstr($_SERVER[PHP_SELF],"/viewpop.skin.php") ) {
            if($jscnt == 1){
                echo "<script src=\"{$g4[path]}/skin/popup/{$rs[po_skin]}/popup_control.js\"></script>";
                $jscnt++;
            }
            if (trim($set_COOKIE["it_ck_pop_".$rs[po_id]]) != "done") {
                $popup_skin_path = "$g4[path]/skin/popup/$rs[po_skin]";
                if($rs[po_popstyle] == "1"){
                    ob_start("get_popup_contents");
                    include("$popup_skin_path/viewlayer.skin.php");
                    ob_end_flush();
                }else{
                    echo "<script>\n";
                    if($popcnt == 1){
                        echo "function popup(url,scroll,po_left,po_top,po_width,po_height,popname) {\n";
                        if($rs[po_leftcenter])
                        echo "po_left = (screen.width / 2) + po_left;";
                        if($rs[po_topcenter])
                        echo "po_top = (screen.height / 2) + po_top;";
                        echo "var settings = 'left='+po_left+','\n";
                        echo "settings += 'top='+po_top+','\n";
                        echo "settings += 'width='+po_width+','\n";
                        echo "settings += 'height='+po_height+','\n";
                        echo "settings += 'scrollbars='+scroll+','\n";
                        echo "window.open(url,popname,settings);";
                        echo "\n}\n";
                        $popcnt++;
                    }
                    echo "popup(\"$popup_skin_path/viewpop.skin.php?po_id=$rs[po_id]\",$rs[po_scrollbar],$rs[po_left],$rs[po_top],$rs[po_width],$rs[po_height],\"pop{$zindex}\");\n";
                    echo "</script>";
                }
                $zindex++;
            }
        }
    }
}
?>

아래는 viewpop.skin.php 입니다.


<?
$g4_path = "../../../"; // common.php 의 상대 경로
include_once("$g4_path/common.php");
include_once("$g4[path]/head.sub.php");
$sql = "select * from $g4[popup_table] where po_id = '$po_id'";
$rs = sql_fetch($sql);
?>
<style>
<!--
body{
margin:0;
}
-->
</style>
<table cellpadding="0" cellspacing="0" bgcolor="#edf2fc" width="100%" height="100%">
    <tr>
        <td>
        <table cellspacing="0" cellpadding="0" bgcolor="#ffffff" width="100%" height="<?=$rs[po_height] - 20;?>">
            <tr>
                <td><?=$rs[po_content];?></td>
            </tr>
        </table>
        <div style="width:100%;background:#000000;color:#FFFFFF;text-align:right;padding-right:5px;;font-size:12px;">            
            <input type="checkbox" id="expirehours<?=$rs[po_id];?>" name="expirehours<?=$rs[po_id];?>" value="<?=$rs[po_expirehours];?>"><?=$rs[po_expirehours];?>시간 동안 이 창을 다시 열지 않음
            <a href="javascript:popup_close(<?=$rs[po_id];?>)"><img src="./img/close.jpg" width="11" height="11" border="0"></a>
        </div>
        </td>
    </tr>
</table>
<?
include_once("$g4[path]/tail.sub.php");
?>
<script>
function popup_close(id) {
    var obj = document.getElementById("expirehours"+id);
    if (obj.checked == true) {
        set_cookie("it_ck_pop_"+id, "done", obj.value, window.location.host);
    }
    self.close();
}
</script>

 

 

이 질문에 댓글 쓰기 :

답변 2

popup.lib 를 include 하기전에 $set_COOKIE 를 어디선가 담았을 것으로 추정됩니다.

위쪽으로 계속 찾아나가보셔야 할것 같아요

$set_COOKIE["it_ck_pop_".$rs[po_id]]) != "done"

말그대로 done 이 아니면 내용을 불러오게 처리되있으니

쿠키값을 읽어서 done 을 넣던 다른걸 넣던 하는 내용이 있을것 같네요

하 ~ 결국엔 거기에 펑션네임이 잘못 들어가 있었습니다.. popup_control.js 의 쿠키 입력 set_cookie는 사용자 펑션이었고,, set_cookie 가 아니고 $_cookie  로 변경하니 되더군요,,  좋은 조언에 해결되었습니다.. 감사합니다..^^

제가 봤을땐 



if (trim($set_COOKIE["it_ck_pop_".$rs[po_id]]) != "done") {

이부분이 쿠키값을 확인하는것 같은데

$set_COOKIE 값을 어디서 가져오는지 확인해보셔야 할것 같습니다.

set_cookie 값을 셋팅해주는 거 같은데요.. 혹시 index-> includ 'popup.lib' -> popup_control.js+viewlayar.skin+viewpopup.skin ->includ 'tail.sub' .. 제가 웹쪽은 좀 약한데 이해한 바로는 이렇게 되는 듯 합니다. 그렇다면 popup.lib 에서 viewlayer 과 viewpopup 을 호출 하기 전에
if 문으로 함수 get_cookie 를 호출하여 pc의 쿠키를 읽어오고 난뒤에 비교해서 참이면 close 하고 거짓이면 open 해야 하지 않는 가 싶어서요.. 그렇다면  여기에 올려진 popup.lib의 내용에는 안보이는 듯 한데 맞는지요??

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

회원로그인

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