테스트 사이트 - 개발 중인 베타 버전입니다

영카트의 배너관리 cookie관련 질문있습니다.. 채택완료

보들이윤 8년 전 조회 7,041

영카트의 배너관리에서 클릭시 링크를 걸면 새창,또는 페이지이동으로

이동을 가능하게 하는 기능이있습니다.

이때에 배너이미지를 클릭하게되면 관리자->배너관리 페이지의 배너리스트에서

조회수가 1씩 증가하는데

영카트의 파일 bannerhit.php 를 보면

</p><p><?php</p><p>include_once("./_common.php");</p><p> </p><p>if ($_COOKIE['ck_bn_id'] != $bn_id)</p><p>{</p><p>    $sql = " update {$g5['g5_shop_banner_table']} set bn_hit = bn_hit + 1 where bn_id = '$bn_id' ";</p><p>    sql_query($sql);</p><p>    // 하루 동안</p><p>    set_cookie("ck_bn_id", $bn_id, 60*60*24);</p><p>}</p><p> </p><p>goto_url($url);</p><p>?></p><p>

 

이렇게 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 를 찾아보면 함수의 내용이 똑같습니다.

 

</p><p>// 쿠키변수 생성</p><p>function set_cookie($cookie_name, $value, $expire)</p><p>{</p><p>    global $g5;</p><p> </p><p>    setcookie(md5($cookie_name), base64_encode($value), G5_SERVER_TIME + $expire, '/', G5_COOKIE_DOMAIN);</p><p>}</p><p> </p><p> </p><p>// 쿠키변수값 얻음</p><p>function get_cookie($cookie_name)</p><p>{</p><p>    $cookie = md5($cookie_name);</p><p>    if (array_key_exists($cookie, $_COOKIE))</p><p>        return base64_decode($_COOKIE[$cookie]);</p><p>    else</p><p>        return "";</p><p>}</p><p>

 

함수 내용을 보면 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) 로 바꾸어서 사용하시는게 맞는 것 같습니다.

제가 보기엔 영카트 소스 에러 같습니다.

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인