Bienvenido, Invitado
Nombre de Usuario: Contraseña: Recordarme

TEMA: [Tutorial] Contar clicks en link (php + mysql)

[Tutorial] Contar clicks en link (php + mysql) 8 años 10 meses ago #19434

  • xyz0k
  • Avatar de xyz0k
  • Offline
  • Experto
  • Mensajes: 228
  • Gracias recibidas 14
  • Karma: 10
¡¡Hola!!

Necesitaba desarrollar una pequeña aplicación para poder contar los clicks en los links de publicidad de la página. Hay varios que son integrables con joomla, pero me apetecía practicar un poco de programación, además de evitar instalar tantas cosas en joomla, os explico paso a paso lo que debéis hacer:

1 - Necesitamos crear las tablas en el mysql que vamos a utilizar:


Creamos dos tablas, la primera tabla que lleva el conteo de los clics totales y la url del anunciante.
La segunda tabla obtiene la ip del usuario (incluso aunque esté en un proxy), muestra los clics de éste, y la última fecha y hora del clic y la id del anunciante (para poder actualizar los clics totales):
CREATE TABLE `total_clicks` (
	`id` int(2) default '1' auto_increment,
	`clicks` int (8) default 0,
	`url` text NULL,
	UNIQUE KEY (`id`)
	);
CREATE TABLE `detalles_click` (
        `ip` varchar (20),
        `clicks_ip` int(8) default 1,
        `date` TIMESTAMP DEFAULT NOW() ON UPDATE NOW(),
        `ad_id` int(2) default '0',
        PRIMARY KEY (`ip`,`ad_id`)
        );

2 - Código html

Lo que hacemos aquí es llamar a un archivo.php (el punto número 3) con una id (será la que utiliza la base de datos, así que 1 para el primer anunciante.
<a href "www.tusitioweb.com/archivo.php?id=X"><img src="enlace img" /></a>
<a href "www.tusitioweb.com/archivo.php?id=X?www.anunciante.com"><img src="enlace img" /></a>

Podemos añadir el anunciante para que aparezca en la url. De ese modo podremos añadir el enlace al anunciante.

3 - Código php

Y aquí el fichero que tenemos que guardar en el directorio raíz de nuestro ftp (donde se encuentra joomla).
<?php
// Función para obtener la ip real del usuario
// Verifica si está en un proxy, ip compartido, etc
 
function getRealIP() {
    if (!empty($_SERVER['HTTP_CLIENT_IP']))
        return $_SERVER['HTTP_CLIENT_IP'];
    if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
        return $_SERVER['HTTP_X_FORWARDED_FOR'];
    return $_SERVER['REMOTE_ADDR'];
}
 
$id = $_GET['id'];
mysql_connect("direccion_bd", "usuario", "password") or die(mysql_error());
mysql_select_db("nombre_base_datos") or die(mysql_error());
$update = "UPDATE total_clicks SET clicks=(clicks + 1) WHERE id='$id'";
mysql_query($update) or die (mysql_error());
$ip = getRealIP();
$update = "INSERT INTO detalles_click (ip,clicks_ip,ad_id) VALUES ('$ip','1','$id') ON DUPLICATE KEY UPDATE clicks_ip = clicks_ip + 1";
mysql_query($update) or die (mysql_error());
$data = mysql_query("SELECT url FROM total_clicks WHERE id='$id'") or die(mysql_error());
$info = mysql_fetch_array($data);
header("Location:" .$info['url']);
?>

Echo esto podemos consultar la base de datos para obtener los datos deseados o modificar el php para que lo guarde en un archivo...

Un saludo :)
Última Edición: 8 años 10 meses ago por xyz0k.
El administrador ha desactivado la escritura pública.

Re: [Tutorial] Contar clicks en link (php + mysql) 8 años 10 meses ago #19442

  • JoniJnm
  • Avatar de JoniJnm
  • Offline
  • Administrador
  • Mensajes: 4579
  • Gracias recibidas 544
  • Karma: 160
Tienes un pequeño fallo en el html, sería:
<a href "http://www.tusitioweb.com/archivo.php?id=X"><img src="enlace img" /></a>
y
<a href "http://www.tusitioweb.com/archivo.php?id=X&www.anunciante.com"><img src="enlace img" /></a>

Parece una tontería pero sin http no funcionaría. Y sin el & antes del id=X tampoco.

Y cuando se crea la tabla primera, deben añadir manualmente los anunciantes, claro, con phpmymadin, por ejemplo.
El administrador ha desactivado la escritura pública.

Re: [Tutorial] Contar clicks en link (php + mysql) 8 años 10 meses ago #19445

  • xyz0k
  • Avatar de xyz0k
  • Offline
  • Experto
  • Mensajes: 228
  • Gracias recibidas 14
  • Karma: 10
Hola joni tienes razón, se me coló al copiarlo del txt que hice..

Claro, la tabla general hay que cargarla con el anunciante:
INSERT INTO `total_clicks` VALUES ('','','http://www.anunciante.com');

¡ Un saludo !
Última Edición: 8 años 10 meses ago por xyz0k.
El administrador ha desactivado la escritura pública.
Tiempo de carga de la página: 0.221 segundos