2012-07-13 2 views
0

하루 동안 활성 사이트를 방문했습니다. 안쪽 페이지에이 기능이 있습니다.MySQL 방문 = +1 방문, 응시 행동

public function visit_update($link){ 
    $query = mysql_query("UPDATE user SET visit = visit + 1 WHERE link = \"$link\" "); 
} 

모든 사용자마다 고유 한 링크가 있습니다. 테스트 (페이지 테스트 중) 때문에 현재 활성 사용자 한 명만 있습니다.

어젯밤에 한 명의 활성 사용자는 데이터베이스에서 50 회의 방문을 기록했습니다. 오늘 나는 그것을 점검 할 때 560 회의 방문을했다. 나는 또한 Google Analytics를 활성화했으며 3 명의 다른 탐색기에서 테스트했기 때문에 50 페이지 정도의 방문수와 3 명의 방문자를 세고있었습니다.

이 기능은 자기 자신을 반복하지 않으며 페이지 소유자가 아닌 방문자 수만 계산합니다. 어떻게 가능합니까?

업데이트 : 밤새 내 사이트를 방문한 두 개의 IP 주소 (66.249.66.87 및 66.249.72.210)를 밖으로 세례반 그들은 구글 출신 고투 원시 로그를 가고,

. 어떻게 PHP로 로봇과 같은 실제 웹 브라우저를 구별 할 수 있습니까? 그게 가능하니?

+2

이 메서드를 호출하는 컨텍스트에서 코드없이 말할 수 없습니다. 그러나, 루프 또는 브랜치 로직 오류로 인해 또는 재 작성 규칙이 잘못되었거나 다른 이유로 560 번 호출하고 있다고 말할 수 있습니다. –

+0

또한 Google 애널리틱스를 사용하여 스크립트가 호출 된 횟수를 확인하지 마십시오. GA는 리디렉션을 통해 등록하는 횟수를 제한하는 데 많은 일을합니다. 대신 웹 로그를 직접 확인해야합니다. –

+0

Google 로봇이 페이지를 확인하고 있지만 분석에 표시되지 않을 수 있습니까? 방문을 업데이트하지 못하게하려면 어떻게해야합니까? – munge83

답변

1

당신은 대부분의 웹 크롤러가 크롤러 있음을 나타냅니다 방문 브라우저의 사용자 에이전트를보고 크롤러를 감지 할 수 있습니다. 크롤러 감지 코드의 예는 here입니다.

0

사이트 방문 횟수를 업데이트하기 전에 사용자 세션을 확인해야합니다.

public function visit_update($link){ 
     if(!empty($_SESSION['user_id']) 
     { 
      $query = mysql_query("UPDATE user SET visit = visit + 1 WHERE link = \"$link\" "); 
     } 
} 

귀하의 사이트에있는 활성 회원의 방문 횟수 만 업데이트됩니다.

+0

페이지는 공개이어야하며 해당 페이지의 소유자가 로그인하지 않은 사람을 포함해야합니다. – munge83

0

당신은 너무 자주 값을 업데이트하지 못할 수 :

UPDATE user 
SET visit = visit+1, last_visit = CURDATE() 
WHERE link = $link AND last_visit < CURDATE() - INTERVAL 30 MIN 
+0

그 다음 나는 진짜 방문자 수를 끌어 들이지 않는다. 로봇이 페이지와 실제 브라우저를 확인할 때를 알 수있는 무언가가 필요합니다. – munge83