segunda-feira, 28 de abril de 2008

Informações de Acesso

No post anterior, eu publiquei uma das muitas vantagens que o PHP nos oferece, que são as variáveis de servidor. Naquele post,

eu mencionei um dos usos para essas variáveis: montar um banco de dados com informações de acesso. Para isso será

necessário ter uma tabela somente para inserir esses dados. À lógica:

1º Obter IP;
2º Obter a referencia(de onde o usuário veio);
3º Obter o User-Agent;
4º Obter a data;
5º Obter a hora;
6º Conectar ao banco de dados;
7º Selecionar a tabela;
8º Verificar se o usuário já visitou o site com o mesmo IP, referência e data;
8º-a: Se sim, inserir os dados;
8º-b Terminar conexão;
9º Se não, terminar a conexão;

<?php
$ip = $_SERVER['REMOTE_ADDR']; //1º Obter IP;
$useragent = $_SERVER['HTTP_USER_AGENT']; //2º Obter a referencia(de onde o usuário veio);
$referencia = $_SERVER['HTTP_REFERER']; //3º Obter o User-Agent;
$data = date("d/m/Y"); //4º Obter a data;
$hora = date("G:i:s"); //5º Obter a hora;

$conexao = mysql_connect("servidor", "usuario", "senha"); //6º Conectar ao banco de dados;
$bd = mysql_select_db("seubanco", $conexao); //7º Selecionar a tabela;

$query = "SELECT * FROM suatabela WHERE ip = '".$ip."' AND referer = '".$referencia."' AND data = '".$data."'"; //Faz a query

com os valores recebidos do array $_SERVER;
$result = mysql_query($query, $conexao);

if(!mysql_num_rows($result)){ //8º Verificar se o usuário já visitou o site com o mesmo IP, referência e data;
$query2 = "INSERT INTO suatabela (ip,user_agent,referer,data,hora) VALUES ('".$ip."', '".$useragent."', '".$referencia."',

'".$data."', '".$hora."')";
$result2 = mysql_query($query2, $conexao); // 8º-a: Se sim, inserir os dados;
mysql_close($conexao); // 8º-b Terminar conexão;
}
else{
mysql_close($conexao); //9º Se não, terminar a conexão;
}
?>

Pronto. É isso aí.
Mas se quiser, tem como dar uma modificada. Com esse script, o usuário pode vir de outra página do seu site, com isso o banco

de dados pode se encher de registros. A referência(variável $HTTP_REFERER) é útil para saber de que site o usuário veio. Caso

você não queria que registre a url do seu próprio site, após a linha: $result = mysql_query($query, $conexao); até o fim do

script, edite para:

if(!mysql_num_rows($result)){
// esse if se traduz em: se a variável conter "parte permanente da sua url", então…;
if(eregi("parte permanente da sua url", $referencia)){ // Essa função(eregi) caça o que estiver entre aspas com o valor

da variável definida não diferenciando maiúsculas de minúsculas, no caso, $referencia;
mysql_close($conexao); // Termina a conexão;
}
else{ // Se não contiver, então registre os dados;
$query2 = "INSERT INTO dados (ip,user_agent,referer,data,hora) VALUES ('".$ip."', '".$useragent."', '".$referencia."',

'".$data."', '".$hora."')";
$result2 = mysql_query($query2, $conexao);
mysql_close($conexao);
}
}
else{
mysql_close($conexao);
}
Espero que tenham aprendido. Você, com toda a criatividade e conhecimento, pode acrescentar mais dados a esse sistema.
Queria agradecer a ajuda que recebi na comunidade PHP Brasil do Orkut, pela ajuda. Qualquer coisa, é só comentar.

0 comentários: