영카트의 배너관리 cookie관련 질문있습니다..
본문
영카트의 배너관리에서 클릭시 링크를 걸면 새창,또는 페이지이동으로
이동을 가능하게 하는 기능이있습니다.
이때에 배너이미지를 클릭하게되면 관리자->배너관리 페이지의 배너리스트에서
조회수가 1씩 증가하는데
영카트의 파일 bannerhit.php 를 보면
<?php
include_once("./_common.php");
if ($_COOKIE['ck_bn_id'] != $bn_id)
{
$sql = " update {$g5['g5_shop_banner_table']} set bn_hit = bn_hit + 1 where bn_id = '$bn_id' ";
sql_query($sql);
// 하루 동안
set_cookie("ck_bn_id", $bn_id, 60*60*24);
}
goto_url($url);
?>
이렇게 if ($_COOKIE['ck_bn_id'] != $bn_id) 로 쿠키값과 배너의 번호를 비교하게되는데
그누보드5에 영카트의 배너관리 부분을 붙히다보니 뭔가 어긋나는것이 있는지
이미지 클릭시 계속 카운트가 1씩 증가합니다.
아래쪽에 set_cookie로 쿠키생성은 제대로 되는데
위의 $_COOKIE['ck_bn_id'] 부분이 적용이 안되는듯한데
영카트와 그누보드의 특정 부분이 다른것이 있어서 그럴까요??
물론 if ($_COOKIE['ck_bn_id'] != $bn_id) 부분을
if (get_cookie("ck_bn_id") != $bn_id) 로 바꾸어서
사용하니 정상작동은 되는데
왜 굳이 $_COOKIE['ck_bn_id']라고 하는것에 담겨있는지
그누보드5에선 $_COOKIE['ck_bn_id']로 왜 불러와지지않는지
궁굼한데 혹시 아시는분 계실까요...
!-->
답변 1
영카트, 그누보드 common.lib.php 에서 get_cookie와 set_gookie 를 찾아보면 함수의 내용이 똑같습니다.
// 쿠키변수 생성
function set_cookie($cookie_name, $value, $expire)
{
global $g5;
setcookie(md5($cookie_name), base64_encode($value), G5_SERVER_TIME + $expire, '/', G5_COOKIE_DOMAIN);
}
// 쿠키변수값 얻음
function get_cookie($cookie_name)
{
$cookie = md5($cookie_name);
if (array_key_exists($cookie, $_COOKIE))
return base64_decode($_COOKIE[$cookie]);
else
return "";
}
함수 내용을 보면 set_cookie에서 쿠키값을 base64로 encode 하기 때문에 $_COOKIE['ck_bn_id']값은 항상 $bn_id의 값과 같을 수 없습니다.
그래서 보들이윤님처럼 if ($_COOKIE['ck_bn_id'] != $bn_id) 부분을
if (get_cookie("ck_bn_id") != $bn_id) 로 바꾸어서 사용하시는게 맞는 것 같습니다.
제가 보기엔 영카트 소스 에러 같습니다.
!-->