¿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
-
<?
-
$_SERVER[‘HTTP_REFERER’]
-
?>
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
-
CREATE TABLE `referer` (
-
`id` int(10) NULL AUTO_INCREMENT,
-
`url` varchar(250) NOT NULL,
-
`web` varchar(250) NOT NULL,
-
`n` int(10) NOT NULL,
-
PRIMARY KEY (`id`)
-
) 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
-
<?
-
function referer()
-
{
-
//para simplificar el nombre de variable, introduzco la url de referer en la variable $ref
-
$ref = $_SERVER[‘HTTP_REFERER’] ;
-
//quito lo superfluo que no me interesa para conseguir el nombre de la web
-
//quito los ‘prefijos’ http:// y www.
-
-
//a partir de la primera "/" elimino el resto (en "pagina.com/directorio/index.htm" quedarÃa "pagina.com" a secas)
-
-
-
//si el referer no está vacÃo (que suele ocurrir) ni provengo de mi misma web. [CAMBIA ESA WEB POR LA TUYA]
-
if(!
empty($web) AND
$web!=
‘miweb.com’)
-
{
-
//miro si esa web ya está en mi base de datos
-
$result =
mysql_query("SELECT web FROM referer WHERE web LIKE ‘$web’");
-
//si no está…
-
-
{
-
//…introduce una nueva fila con los datos de esta web
-
mysql_query("INSERT INTO referer (r, url, web, n) VALUES (NULL, ‘$ref’, ‘$web’, ‘1′)");
-
}
-
else //pero si ya la tengo en mi base de datos…
-
{
-
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
-
}
-
}
-
}
-
//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
-
-
//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
-
function ref_muestra($n=5)
-
{
-
//Escojo las webs que más click tengan
-
$result =
mysql_query("SELECT * FROM referer ORDER BY n DESC LIMIT 0,$n");
-
-
-
{
-
echo "<p>Todabia no se han registrado enlaces.</p>";
-
}
-
else
-
{
-
-
-
{
-
echo ‘<li><a href="’.
$fila[‘url’].
‘" title="’.
ucfirst($fila[‘web’]).
‘ - ‘.
$fila[‘n’].
‘ cliks">’.
ucfirst($fila[‘web’]).
"</a></li> " ;
-
}
-
-
}
-
}
-
?>
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
-
<?
-
include(‘referer.php’) //incluyo el archivo
-
referer(); //Llamo a la función. Ella sola lo hará todo.
-
-
echo "A continuacion una lista con las webs que nos enlazan:";
-
ref_muestra();
-
-
echo "Y esta es la que más clicks tiene hacia nosotros:";
-
ref_muestra(1);
-
-
echo "Y estas son la mayoria de webs que nos han enlazado:";
-
ref_muestra(100);
-
-
//Como veis podemos mostrar la cantidad que queramos de resultados
-
?>
21 Julio 2006 · Tags Sin categorÃa |