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

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

QA

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

답변 2

본문

안녕하세요?

php 처음 배우고자 책에 나오는 - 인터넷에 검색하여 처음 나오는 스크립트가

방문자 카운터인데...이것 세션이나 쿠키 적용해도 카운터가 브라우저 새로고침 할 때 마다 증가하네요..

접속 시 한번만 카운팅 되었으면 하는데..

구글링 해서 나오는 스크립트 사용해도 마찬가지고..........

아래 소스입니다.

뭐가 잘못 되었는지??? php 버전에 따라 문법이 잘못 되었는가요???

 

<?php
session_start();   
/**
 * 카운터 예제
 */ 
    if ( !file_exists ( "count1.txt") )
    {
        $fp = fopen("count1.txt", "w+") ;
        fclose($fp) ;
    }

    // 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 "<br>" ;
    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"];

}

쿠키가 안되신거는 함수명을 잘못 호출하셔서 그렇습니다.
PHP는 대소문자를 구분하기 때문에 구분하여 작성을 해주셔야 합니다.^^


예)

  if(!isset($_COOKIE['ip']))      //만약 세션에 카운터 값이 없다면
  {
      ..............
    setcookie("ip", $_SERVER['REMOTE_ADDR'],time() + 86400 ) ;
  }

 DogFoot개발 > 님 감사합니다.  작동하지 않는 이유는 아마도 인터넷에 있는 소스들에 구  php 버전에서 작성한 것이라

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

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

답변 주셔서 감사합니다.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 99
© SIRSOFT
현재 페이지 제일 처음으로