¿Cómo puedo usar PHP y JavaScript para hacer clic en una imagen e incrementar un contador almacenado como un archivo plano?

Estoy tratando de encontrar un script php / js que me permita tomar una imagen, y cuando hago clic en ella, aumento el número en un archivo plano y guardo ese archivo.

Sé cómo incluir el archivo para obtener el total de votos.

Me estoy volviendo loco tratando de encontrar esto para conectar y jugar en mi sitio web. Me encantaría tener el inicio de sesión de IP, y una genial actualización de entrada / salida. Pero en este punto no se conforma con lo básico.

Me gustaría evitar el uso de MySQL, pero si es necesario, puedo trabajar con él.

Su mejor opción es utilizar el soporte de AJAX en jQuery para acceder, pero no cargar al usuario, algún tipo de URL que escriba el incremento en el archivo. Si está utilizando algún tipo de plataforma exhaustiva, debería considerar realizarla en su base de datos. Sin embargo, sería bastante simple utilizar la función $ .get () de jQuery para acceder a la URL /increment_number.php?image=whatever.jpg. Si alguna vez comienza a usar una base de datos, solo tendrá que cambiar esta secuencia de comandos para realizar una consulta DB. Para su caso, tendría un script simple como este (que de ninguna manera ha sido optimizado o tiene alguna consideración de seguridad):

$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); 

Y solo recuerda tener el siguiente bit de JS en la página con la imagen:

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

No he probado este código por lo que podría no funcionar, pero está en el espíritu de lo que tendrías que hacer.

Algo simple como esto no funcionará?

  $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); ?> 

Si está haciendo esto para un sistema de votación como Stack Overflow, crear muchos archivos para almacenar esta información se volverá difícil de manejar. Esto es perfecto para una base de datos.

De esta forma, tampoco incluiría el archivo, pero realizaría una consulta para obtener el puntaje total.