php 쿠키와 세션 적용-작동이 안되는 것은 ?
관련링크
본문
안녕하세요?
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"];
}
DogFoot개발 > 님 감사합니다. 작동하지 않는 이유는 아마도 인터넷에 있는 소스들에 구 php 버전에서 작성한 것이라
현재의 작성규칙에 맞지 않는지?
문장의 공백까지 체크를 하는 것 같네요..... 문장을 다시 작성하니 쿠키도 작동하네요..^
답변 주셔서 감사합니다.