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

php 쿠키와 세션 적용-작동이 안되는 것은 ? 채택완료

돌소프트 4년 전 조회 2,440

안녕하세요?

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개

채택된 답변
+20 포인트

우선 아래 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개

돌소프트
4년 전
감사합니다. 세션으로 하는 것은 잘 해결 되었습니다.
혹시 쿠키로 처리 할때는 어찌하는지요?
D
DogFoot개발
4년 전
쿠키가 안되신거는 함수명을 잘못 호출하셔서 그렇습니다.
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 버전에서 작성한 것이라

현재의 작성규칙에 맞지 않는지? 

문장의 공백까지 체크를 하는 것 같네요..... 문장을 다시 작성하니 쿠키도 작동하네요..^

답변 주셔서 감사합니다.

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

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

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

로그인