2009-07-14 3 views
1

Im 이미지를 가져올 수있는 PHP/js 스크립트를 찾으려고합니다. 클릭하면 플랫 파일의 수를 늘리고 파일을 저장합니다.PHP 및 JavaScript를 사용하여 이미지를 클릭 할 수있게 만들고 플랫 파일로 저장된 카운터를 증가시킬 수 있습니까?

나는 투표 합계를 얻기 위해 파일을 포함시키는 법을 안다.

내 웹 사이트에 플러그 앤 플레이로 이걸 찾으려고하면 미친 듯이 간다. ID는 ip 로깅을 좋아하고 시원한 페이드 인/아웃 새로 고침 업데이트가 필요합니다. 그러나이 시점에서 아프다.

이드는 MySQL을 사용하는 것을 피하고 싶지만, 필요한 경우 그걸 사용할 수 있습니다.

답변

4

가장 좋은 접근 jQuery를에 AJAX 지원을 사용하지만 사용자, 파일에 증가를 기록 URL의 어떤 종류에로드하지 않는 것입니다. 어떤 종류의 철저한 플랫폼을 사용하고 있다면, 데이터베이스로 작업하는 것을 고려해야합니다. 그러나 jQuery의 $ .get() 함수를 사용하면 /increment_number.php?image=whatever.jpg URL에 액세스 할 수 있습니다. 데이터베이스를 사용하기 시작했다면 DB 쿼리를 수행하기 위해이 스크립트를 변경하기 만하면됩니다. 귀하의 경우를 들어, (어떠한 방식으로 최적화에 있었다 또는 어떠한 보안 고려 사항을 가지고있다)과 같은 간단한 스크립트 거라고 :

$image = $_GET['image']; 
$number = file_get_contents('tracker_for_{$image}.txt'); 
if ($number != ''){ 
    $number = (int) $number + 1 
} 
$file = fopen('tracker_for_{$image}.txt', 'w'); 
fwrite($file, $number); 
fclose($file); 

을 그냥 페이지와에 JS의 다음 비트를 기억 이미지 :

$(document).ready(function(){ 
    $('img.incrementme').click(function(){ 
     $.get('/increment.php?'+$(this).attr('src')); 
    }); 
); 

이 코드는 테스트되지 않았으므로 작동하지 않을 수도 있지만,해야 할 일의 정신에 달려 있습니다.

2

스택 오버플로와 같은 투표 시스템에서이 작업을 수행하는 경우이 많은 정보를 저장하기위한 많은 파일을 만드는 것이 다루기 힘들어 질 것입니다. 이것은 데이터베이스에 적합합니다.

그런 식으로 파일을 포함시키지 않고 전체 점수를 얻기 위해 쿼리를 수행 할 수도 있습니다.

+2

SQlite는 이와 같은 작업을 위해 데이터베이스와 플랫 파일 간의 멋진 절충안입니다. –

3

이와 비슷한 간단한 기능이 작동하지 않습니까?

<?php 
// Link to this file: <a href='onclick.php'><img src='yourimg'></a> 
$count = file_get_contents("count.file"); 
$count += 1; 
file_put_contents("count.file", $count); 

// Possibly log an IP too? open a file 
$f = fopen("ipaddresses.file", "a"); 
fwrite($f, $_SERVER["REMOTE_ADDR"] . "\n"); 
fclose($f); 
?> 
관련 문제