Zumbe.net

Comenzando a programar una web

Listado de referers

¿Te gustaría ofrecer en tu web una lista con las webs que te han enlazado? Sigue el tutorial y lo conseguirás muy fácilmente. (PHP + MySQL)

Hace un tiempo vi esta idea en una web, mostrar enlaces a las webs que te han enlazado. Esto puede ser muy positivo para tu web, ya que primero: devuelves el favor; segundo: es una motivación para webmásters que querrán enlazarte; y tercero: lo más probable es que enlaces a webs relacionadas.

De modo que pongámonos con el código. Lo primero es saber cómo acceder a esa información (de qué URL viene nuestro usuario). En PHP existe una variable predefinida con esta URL. Es una variable de servidor y su fomra es:

Código: php
  1. <?
  2.       $_SERVER[‘HTTP_REFERER’]
  3. ?>

Pues bien, ahora creamos en nuestra base de datos una tabla que llamaremos referer por ejemplo. Con los campos ‘id’, ‘url’, ‘web’ y ‘n’

La sentencia SQL podría ser esta:

Código: sql
  1. CREATE TABLE `referer` (
  2. `id` int(10) NULL AUTO_INCREMENT,
  3. `url` varchar(250) NOT NULL,
  4. `web` varchar(250) NOT NULL,
  5. `n` int(10) NOT NULL,
  6. PRIMARY KEY  (`id`)
  7. ) TYPE=MyISAM ;

En id guardaremos el número identificativo de cada web (conviene tener un campo id de tipo auto_increment en todas nuestras tablas)

En url guardaremos la dirección exacta de donde proviene.

En web guardaremos un nombre para esa web. Si la url es “http://www.paginaweb.com/directorio/archivo.php?variagle=valor” no queremos enlazarla con ese pedazo de nombre, la llamaríamos simplemente “Paginaweb.com”

Finalmente, en n guardaremos el número de clicks que se han producido desde cada web hacia la nuestra.

Ahora paso a mostraros el código comentado lo máximo que he podido

referer.php

Código: php
  1. <?
  2. function referer()
  3. {
  4.      //para simplificar el nombre de variable, introduzco la url de referer en la variable $ref
  5.      $ref = $_SERVER[‘HTTP_REFERER’] ;
  6.      //quito lo superfluo que no me interesa para conseguir el nombre de la web
  7.      //quito los ‘prefijos’ http:// y www.
  8.      $web = str_replace(array(‘http://’,‘www.’),,$ref);
  9.      //a partir de la primera "/" elimino el resto (en "pagina.com/directorio/index.htm" quedaría "pagina.com" a secas)
  10.      $web = substr($web,0,strpos ($web, ‘/’));
  11.    
  12.      //si el referer no está vacío (que suele ocurrir) ni provengo de mi misma web. [CAMBIA ESA WEB POR LA TUYA]
  13.      if(!empty($web) AND $web!=‘miweb.com’)
  14.      {
  15.           //miro si esa web ya está en mi base de datos
  16.           $result = mysql_query("SELECT web FROM referer WHERE web LIKE ‘$web’");
  17.           //si no está…
  18.           if(mysql_num_rows($result)==0)
  19.           {
  20.                //…introduce una nueva fila con los datos de esta web
  21.                mysql_query("INSERT INTO referer (r, url, web, n) VALUES (NULL, ‘$ref’, ‘$web’, ‘1′)");
  22.           }
  23.           else //pero si ya la tengo en mi base de datos…
  24.           {
  25.                mysql_query("UPDATE referer SET url=’$ref’, n= n+1 WHERE web LIKE ‘$web’") ; //entonces actualiza a la última URL de dónde proviene y suma un click a esta web
  26.           }
  27.      }
  28. }
  29. //Fin de la función "referer". Cuando quiera que se ejecute esta función no tengo más que escribir una línea de código que ponga "referer();" <= sin las comillas
  30.  
  31. //Esta función sirve para mostrar las páginas en mi web en forma de lista, por defecto el número de webs que mostrará será 5
  32. function ref_muestra($n=5)
  33. {
  34.      //Escojo las webs que más click tengan
  35.      $result = mysql_query("SELECT * FROM referer ORDER BY n DESC LIMIT 0,$n");
  36.      
  37.      if(mysql_num_rows($result) == 0)
  38.      {
  39.           echo "<p>Todabia no se han registrado enlaces.</p>";   
  40.       }
  41.       else
  42.       {
  43.           echo "<ul>" ;
  44.           while($fila=mysql_fetch_array($result))
  45.           {
  46.                echo ‘<li><a href="’.$fila[‘url’].‘" title="’.ucfirst($fila[‘web’]).‘ - ‘.$fila[‘n’].‘ cliks">’.ucfirst($fila[‘web’])."</a></li> " ;
  47.           }
  48.           echo "</ul>" ;   
  49.       }
  50. }
  51. ?>

Así de sencillo. Y ahora en cualquier página de nuestra web incluiremos esto: (Como ejemplo he puesto index.php, pero puede ser cualquier página)

index.php

Código: php
  1. <?
  2. include(‘referer.php’) //incluyo el archivo
  3. referer(); //Llamo a la función. Ella sola lo hará todo.
  4.  
  5. echo "A continuacion una lista con las webs que nos enlazan:";
  6. ref_muestra();
  7.  
  8. echo "Y esta es la que más clicks tiene hacia nosotros:";
  9. ref_muestra(1);
  10.  
  11. echo "Y estas son la mayoria de webs que nos han enlazado:";
  12. ref_muestra(100);
  13.  
  14. //Como veis podemos mostrar la cantidad que queramos de resultados ;)
  15. ?>

21 Julio 2006 · Tags Sin categoría |

No hay comentarios, escribe el primero!

Escribe un comentario!

Buscador

2005-2007 Zumbe.net Creada por Alex Barros con WordPress - Licencia Reconocimiento - RSS