Esse � o exemplo de scripts que uso no meu site para saber de onde vem os visitantes...

Bem, � o seguinte:

Tenho na minha p�gina index.php o seguinte script:

<script language='JavaScript'>
if (document.referrer) {
var refer = document.referrer;
document.location.href = 'referencia.php?DominioRefer=' + refer;
}
</script>

O script acima faz o seguinte: se existir uma refer�ncia o script redireciona para a
p�gina referencia.php enviando junto a informa��o da url de onde veio o visitante.

Obs: caso n�o haja uma refer�ncia o index.php apenas redireciona para a p�gina principal.

Na p�gina referencia.php existe o seguinte script:

// In�cio do Script

<?
$UrlAnalisar = "$DominioRefer";
$UrlReferencia=parse_url("$UrlAnalisar");
$DominioInsere = $UrlReferencia[host];

$DataHpo = date("d/m/Y");   // Formato das datas
$HoraHpo = date("H:i:s");   // Formato das horas

// Aqui voc� abre a conex�o com o seu banco de dados...

if ($DominioInsere != "www.hpobr.com" and $DominioInsere != "") {
$Consultar = mysql_query("Select * from $TableStatusRef where referer = '$DominioInsere'");
$PagExiste = mysql_num_rows($Consultar);
if ($PagExiste == 0) {
$IncluiPagRef = mysql_query("INSERT INTO $TableStatusRef (data,hora,referer,hits) VALUES ('$DataHpo','$HoraHpo','$DominioInsere','1')");
} else {
$DataRegistro = mysql_fetch_array($Consultar);
$DataComparada = $DataRegistro[data];
if ($DataHpo != $DataComparada) {
$AtualizaPagRef = mysql_query("UPDATE $TableStatusRef SET data= '$DataHpo', hora='$HoraHpo', hits=hits+1 WHERE referer='$DominioInsere'");
}
}
}
// Aqui voc� fecha a conex�o com o seu banco de dados...
?>
<meta http-equiv="Refresh" content="0; URL=Aqui fica a url relativa do seu site">

// Fim do Script

Explicando o script:
Obs: Voc� j� deve ter criado a tabela para receber os dados.

$TableStatusRef se refere ao nome da tabela de refer�ncias.

A tabela cont�m os seguintes campos:
- data
- hora
- referer
- hits

O script para cria a tabela fica assim:

CREATE TABLE `Nome_da_Tabela` (
  `id` int(11) NOT NULL auto_increment,
  `data` varchar(10) default NULL,
  `hora` varchar(8) default NULL,
  `referer` varchar(50) default NULL,
  `hits` int(5) default NULL,
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;


O que este script faz:

Ele recebe a informa��o da url de onde veio o visitante, processa ela para ficar apenas o
host de onde veio, depois verifica se n�o � o mesmo host do seu site e nem se o host est�
vazio.
Depois disso ele verifica se j� existe o host na tabela, se existir, ele inclue mais um hit
para ele, caso contr�rio ele adiciona o novo host com um hit.

Eu inclui no script uma ferramenta para verificar se o host j� fez uma visita no mesmo dia,
para evitar que visitantes fiquem repetindo a visita s� para aparecer no topo da lista, mas
isso nem � muito �til... pois h� formas de contornar essa ferramenta...

Ap�s processar todo o script ele redireciona para a p�gina principal...

Agora, para visualizar os dados no seu site:

Segue o exemplo de como eu uso no meu site...

O script fica assim:

// Aqui o banco de dados j� deve estar conectado...

echo "<center><table width='95%' border='0' bordercolor='0099CC' cellpadding='0' cellspacing='0' bgcolor=''>
<tr>
<td colspan='3' width='100%' height='25' align='center' valign='middle' class='txtp' bgcolor=''>
<font color='FF8080'><b>Websites que mais enviam visitas para a Home Page Online <small>[Top 10]</small></font></b></td>
</tr>
<tr>
<td valign='middle' height='20' align='left' class='txtp'>
<p align='center' valign='middle'>
<font color='8080FF'><b><small>Endere�o do Website (Url de Origem)</small></b></font></td>
<td valign='middle' height='20' align='center' class='txtp'>
<font color='8080FF'><b><small>�ltimo Envio (Data e Hora)</small></b></font></td>
<td valign='middle' height='20' align='center' class='txtp'>
<font color='8080FF'><b><small>Hits</small></b></font></td></tr>";

$RefQuery = mysql_query("SELECT *  FROM $TableStatusRef ORDER BY `hits` DESC LIMIT 0,10");

	$Num = 1;
	while($Linha = mysql_fetch_array($RefQuery)) {
	$Numeracao = $Num++;
	if ($Numeracao < "10") { $Numeracao = "0$Numeracao"; }
	echo "<tr>
	<td valign='middle' height='15' align='left' class='txtp'>
	<p align='left' style='margin-left:5'>
	<a href=\"http://$Linha[referer]\" title=\"Visitar o Website\" target=\"_blank\" onmouseover=\"self.status='Clique no link para visitar o website...';return true\">
	<small>	$Numeracao.�)&nbsp;&nbsp;$Linha[referer]</small></a></td>
	<td valign='middle' height='15' align='center' class='txtp'>
	<small>$Linha[data] �s $Linha[hora]</small></td>
	<td valign='middle' height='15' align='center' class='txtp'>
	<b><small>$Linha[hits]</small></b></td></tr>";
	}
echo "</table></center>";
?>

E este script faz o seguinte:
Seleciona por ordem de n�mero de hits, decrescente, com o limite de 10 informa��es.
E as exibe na tabela...

� isso a�...
Espero que ajude...
E aos programadores mais experientes, por favor, melhorem este script...

E principalmente melhorem a explica��o de como utilizar...

Desculpe pelas explica��es que n�o s�o muito boas...

Alexandre Pina