문제

나는 간단한 mysql 테이블을 사용하여 웹 사이트의 특정 페이지/항목에 대한 날 히트를 계산합니다. 페이지/항목 ID에 'ID'열, 방문/히트의 날 '날짜'및 히트 수에 대한 'Hits'열을 사용합니다.

누군가가 페이지를 방문 할 때마다 해당 특정 날짜의 히트 값은 +1로 업데이트됩니다.

그러나 페이지가 새로 고침되거나 재 방문 될 때마다 값이 한 번 더 업데이트되며 쿠키 또는 데이터베이스의 방문자 IP에서 페이지 ID를 저장하여 한 번만 히트를 업데이트 할 수있는 방법이 필요합니다.

나는 쿠키를 사용하지 않았으므로 쿠키에 저장 될 수있는 것보다 쿠키를 수행하는 방법과 데이터의 한계를 알지 못합니다.

데이터베이스에서 방문자의 IP 주소를 저장하는 것은 실제로 Queires와 Bandwitch의 낭비라고 생각하며 실제 IP를 얻는 것이 항상 가능하지는 않으며 이로 인해 약간의 문제가 발생하고 일부 히트가 업데이트되지 않을 수 있다고 읽었습니다.

또한 글로벌 변수를 너무 많이 사용하지 않는 것이 더 낫다는 것을 읽었습니다 ...

누군가 저에게 가장 좋은 방법과 그것을하는 방법을 설명해 주시겠습니까?

감사!

도움이 되었습니까?

해결책

쿠키를 PHP 변수로 다루고 싶다면, 당신이 가장 친숙한 것에 대해, 나는 세션을 사용할 것입니다.

session_start()
$page = 1; // Page ID
if(isset($_SESSION[$page]))
{
    // Do something if the person refreshed
}
else
{
     $_SESSION[$page] = time();
     // record hit.
}

$ Page 변수에서 페이지 ID를 가져 오면 세션에 저장됩니다. 세션은 서버 측에 저장 된 것을 제외하고 쿠키와 같습니다.

기본적으로 해당 페이지의 ID에 변수가 있으면 아무것도 수행하지 않으며 다른 히트를 기록하고 변수를 설정합니다.

세션에 대한 자세한 내용은이 자습서를 확인할 수 있습니다. http://www.tizag.com/phpt/phpsessions.php

쿠키와 마찬가지로 세션은 일정 시간 동안 만 지속됩니다. 그래서 며칠 후에 방문을 기록 할 것입니다.

마지막으로 방문한시기를 수동으로 확인하고 싶을 수도 있습니다. 1 시간이 넘면 새로운 히트를 기록하십시오. 아마도 상쾌하지 않기 때문입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top