2010-01-09 4 views
1

안녕 얘들 아, 내가 클라이언트를위한 작은 제품 카탈로그를 구축. 나는 현재 사용자가 "인기"로 정렬 할 수 있도록하는 방법을 알아 내려고 노력 중이다. 이 작업을 수행하는 가장 쉽고 간단한 방법은 각 제품 레코드에 "보기"필드가 있어야한다는 것입니다.페이지보기가 고유한지 확인하는 쉬운 방법은 무엇입니까?

원래 이걸 (duh) 통해 생각하지 않았고 특정 제품을 검색하는 함수가 호출 될 때 "조회수"에 하나를 추가한다고 생각했습니다. 물론이 문제는 페이지를 30,000 번 새로 고치는 사람을 설명하지 않는다는 것입니다.

이 문제를 해결하는 가장 좋은 방법은 무엇입니까? PHP는 방문이 고유한지 여부를 확인할 수있는 방법이 있습니까?

저는 php/codeigniter/mysql/html/css/javascript/jquery를 사용하고 있습니다.

답변

5

클라이언트가 이미 세션 변수에서 페이지를 방문한 경우 저장할 수 있으며 동일한보기 쿼리를 실행합니다. 이제는 사용자가 브라우저를 닫고 다시 열고 다시 돌아 오는 것을 막을 수는 없지만 상당한 수준의 보호를 제공해야합니다. 충분하지 않으면 쿠키로 이동하고 사용자 등록 또는 IP 추적을 수행 할 수 있습니다.

좋습니다. 세션 접근 방식입니다. 귀하의 페이지에서 실행 : 당신이 'some_unique_string' 당신에 대해 의견을 추적하는 페이지에 고유 있는지 확인하는 것이 좋습니다

session_start(); 
if(!isset($_SESSION['page_views']['some_unique_string'])){ 
    $_SESSION['page_views']['some_unique_string'] = true; 
    // update your database 
} 

참고.

접근 방법은 쿠키와 거의 동일합니다.

+0

아마도 이것은 좋은 시작일 것입니다. 필요하지 않은 경우 쿠키를 사용하지 않는 것이 좋습니다. – Roeland

+1

세션 변수에는 쿠키가 필요하지 않습니다. –

0

페이지보기가 고유한지 확인하려면 모든 페이지보기의 원격 IP를 저장해야합니다. 방문자가 방문했는지 여부를 알 수있는 확실한 방법은 없습니다. 그들의 시스템에 쿠키를 두는 것은 나중에 100 만 가지 이유 때문에 실패 할 것이고, 쿠키를 지우고, 다른 브라우저를 사용하게 될 것입니다. 당신이보기를 세고있는 무엇이든 외래 키가있는보기 테이블이 필요합니다.

당신은 여기 내 무료 평가 이미지 스크립트 코드의 종류를 모두 찾을 수 있습니다 다음 addImageRating.php 스크립트에서

http://ratedsite.com/

봐 : 여기

http://destiney.com/php

는 데모입니다 .

+0

이 리소스를 많이 사용하지 않을 것입니다. – Roeland

+1

일부 ISP는 각 사용자에게 전용 IP를 제공하지 않기 때문에 완벽한 방법은 아닙니다. 이는 대학에서 흔히 볼 수 있으며 AOL의 큰 문제였습니다. 즉, 내 사이트의 고유성을 결정하기 위해 고유 한 IP를 계산하는 것을 더 선호합니다. 주의 사항이 있다는 것을 이해하십시오. – Gattster

+0

리소스 집약적 인 의견에 관해서 : 리소스 집약적이지 않은 솔루션이 필요한 경우 쿠키를 사용하십시오. 누군가가 투표 시스템을 악용하는 것을 더 어렵게 만들고 싶다면 각 투표마다 새로운 IP를 요구하십시오. 사안별로 결정해야합니다. – Gattster

관련 문제