php 쿠키와 세션 적용-작동이 안되는 것은 ? 채택완료
안녕하세요?
php 처음 배우고자 책에 나오는 - 인터넷에 검색하여 처음 나오는 스크립트가
방문자 카운터인데...이것 세션이나 쿠키 적용해도 카운터가 브라우저 새로고침 할 때 마다 증가하네요..
접속 시 한번만 카운팅 되었으면 하는데..
구글링 해서 나오는 스크립트 사용해도 마찬가지고..........
아래 소스입니다.
뭐가 잘못 되었는지??? php 버전에 따라 문법이 잘못 되었는가요???
// count.txt 파일을 읽어 각 줄마다 배열로 만들어 리턴합니다. $count = file("count1.txt") ; // count.txt파일의 첫줄이 $count[0]에 저장되는데 이것을 chop함수를 이용하여 $count변수에 대입합니다. $count = chop($count[0]) ; //if ( !$_COOKIE["ip"] ) //if (!$_COOKIE["ip"]) if(!isset($_SESSION['count'])) //만약 세션에 카운터 값이 없다면 { $count++ ; // count.txt파일을 쓰기 모드로 열어 $count변수의 값을 기록하고 파일을 닫습니다. $fp = fopen("count1.txt", "w") ; fwrite($fp, "$count") ; fclose($fp) ; //SetCookie("ip", $_SERVER['REMOTE_ADDR'],86400) ; //하루동안 저장 }
echo $_SERVER['REMOTE_ADDR'] ; echo " " ; echo ($count);
?>
답변 2개
우선 아래 3가지 사항 체크해 주시면 될것 같습니다.
1.
세센값이 있는지 부터 체크....
print_r($_SESSION);
2.
if(!isset($_SESSION['count'])) 이 조건문이여서 계속 증가되는거 같습니다.
이 조건문이라면 조건문 안에다 $_SESSION['count'] = $count; 이러한 로직이 들어가 줘야할것 같습니다.
if(!isset($_SESSION['count'])) 값이 계속 없으니 카운팅이 되는거 같습니다.
3.
조건문을 바꿔서 해보시는것도 추천드립니다.
if(!isset($_SESSION['ip_check']))
{
.............
$_SESSION['ip_check'] = $_SERVER["REMOTE_ADDR"];
}
답변에 대한 댓글 2개
PHP는 대소문자를 구분하기 때문에 구분하여 작성을 해주셔야 합니다.^^
예)
if(!isset($_COOKIE['ip'])) //만약 세션에 카운터 값이 없다면
{
..............
setcookie("ip", $_SERVER['REMOTE_ADDR'],time() + 86400 ) ;
}
댓글을 작성하려면 로그인이 필요합니다.
https://sir.kr/bbs/profile.php?mb_id=resing" onclick="return false;" rel="nofollow" target="_blank" title="DogFoot개발 자기소개"> DogFoot개발 > 님 감사합니다. 작동하지 않는 이유는 아마도 인터넷에 있는 소스들에 구 php 버전에서 작성한 것이라
현재의 작성규칙에 맞지 않는지?
문장의 공백까지 체크를 하는 것 같네요..... 문장을 다시 작성하니 쿠키도 작동하네요..^
답변 주셔서 감사합니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
혹시 쿠키로 처리 할때는 어찌하는지요?