2009-07-23 4 views
6

픽셀 추적의 기본 사항을 이해하고 추적 도메인의 이미지를 참조하는 픽셀을 다른 웹 사이트에 삽입 할 수 있습니다.PHP의 도메인에서 픽셀 추적을 사용하는 방법

그러나 추적 도메인의 실제 픽셀 수를 어떻게 늘릴 수 있습니까? 픽셀 이미지가 제공 될 때마다 알려주는 일종의 로그가 있습니까?

<img src="http://www.foo.com/serveImage/getImage.php?id=5123" /> 

다음의 된 GetImage 페이지가 전달 된 ID를 기반으로 이미지 및 증분을 제공 : 내가 좋아하는 뭔가를 할 수 있습니까? 또는 이것을 달성하기위한 더 좋은 방법이 있습니까?

미리 감사드립니다.

답변

13

:

header("Content-type: image/gif"); 
header("Content-length: 43"); 
$fp = fopen("php://output","wb"); 
fwrite($fp,"GIF89a\x01\x00\x01\x00\x80\x00\x00\xFF\xFF",15); 
fwrite($fp,"\xFF\x00\x00\x00\x21\xF9\x04\x01\x00\x00\x00\x00",12); 
fwrite($fp,"\x2C\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02",12); 
fwrite($fp,"\x44\x01\x00\x3B",4); 
fclose($fp); 
+0

이것은 파일을 먼저 로딩하지 않고 이미지를 버퍼에 직접 출력합니다. 이것은 더 빠릅니다. – Andy

3

네, 맞습니다.

각 사이트 나 페이지에 고유 한 ID를 부여한 다음 이미지 src에 전달합니다. 따라서 귀하의 예에서 ID는 5123입니다.

getImage.php 스크립트에서이 ID를 사용하여 데이터베이스를 증가 시키거나 (데이터를 기록하지만) 원하는 모든 이미지를 반환하십시오. 반환하는 이미지가 히트 수를 표시하도록하려면 GD extention을 사용하여 즉석에서 이미지를 만들 수 있습니다. 자세한 내용은 PHP 설명서를 참조하십시오.

3

이 내 트랙 코드 :

이이 빠르고 간단한 방법입니다 만 출력 GIF, 당신의 스크립트가 이전 또는 이후에 다른 아무것도 출력하지 않습니다 있는지 확인하려면
<?php 

$id = $_GET['site_id']; 

// do track 

$imageFile = 'images/pixel.jpg'; 
$im = imagecreatefromjpeg($imageFile); 
header('Content-type: image/jpeg'); 
imagejpeg($im); 


?> 
+5

리소스 사용을 줄이려면 GD를 사용하여 이미지 파일을 읽은 다음 다시 읽어 내십시오. 그냥 콘텐츠 헤더를 보낸 다음'readfile()'을 사용하십시오. – gnud

+0

@gnud 당신 말이 맞아요 ... 이제는 301 HTTP 헤더로 이미지로 리다이렉트하는 것이 더 현명 할 것입니다 ... –

1

접선 대답의 종류, 그러나 코멘트 너무 오래 : 당신은 반드시 당신이 그것을 구현하는 방법에 따라, 아무것도 증가 할 필요가 없습니다

. 서버를 초고속으로 만들려고한다면 서버 요청 로그 만 사용하면 충분합니다. "getImage.php? q = 5123"에 대한 모든 요청은 이미있을 것입니다. querystring에서 관련 정보를 뽑아 내면됩니다.

추적 버그를 처리하는 데 영향을 미치지 않는 범위 밖에서 로그를 나중에 (cron 외) 통해 쿼리 가능한 멋진 데이터베이스로 구문 분석 할 수 있습니다. 모든 것을 한 번에 수행하는 것은 좀 더 우아하지만, 많은 요청을 처리하는 중이라면 로그는 이미 존재합니다.

보너스 : 서버 로그도 참조 자에게 & 타임 스탬프를 가지고, 그래서 당신은 쉽게 사람이 직접 getImage.php을 망치거나 숫자를 게임을 다른 곳에서에 연결되어있는 경우, 그 숫자 가치가 뭔가해야 볼 수 있습니다.

관련 문제