← Tutoriais

[PHP] Estatísticas - Data, Hora, IP, Navegador e Origem

Lida 7144 vezes

Offline

=IceBurn= 
Membro
Mensagens 897 Gostos 3
Feedback +3

Troféus totais: 32
Trófeus: (Ver todos)
Windows User Level 6 Linux User Mobile User Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5

Criei isto como que uma actualização a um outro tutorial que postei há já algum tempo.
Podem vê-lo aqui  :arrow: http://forum.maistrafego.pt/index.php?topic=3318

Com este código é possível guardar os mesmos detalhes que no antigo tutorial, mas foram feitas algumas melhorias e adicionadas algumas funções, com especial destaque para a possibilidade de aceder as estatísticas numa página HTML.

Como recentemente alguem voltou a pedir uma coisa deste género, resolvi recriar o script e colocar aqui. Este é identico a um que fiz para o site de um amigo meu, mas com menos funcionalidades, que considerei como sendo desnecessárias.

Vamos precisar de 3 ficheiros:
 :arrow:  registos.txt
 :arrow:  guardar.php
 :arrow:  mostrar.php

Atenção que é muito importante que sejam dadas permissões 777 ao ficheiro registos.txt para quem trabalha com sistemas Unix.

Os 3 ficheiros tem de estar tambem no mesmo directório.

Primeiro o ficheiro que faz a contagem, nomeado guardar.php:
Código: [Seleccione]
<?php # GUARDAR.PHP
//////////////////////////////////////////////////////////////////////
//  Estat&#237;sticas - Data, Hora, IP, Navegador e Origem do Visitante  //
//              * * *  Elaborado por =IceBurn=   * * *              //
//        * * * * * * *   WWW.TENHAMEDO.NET  * * * * * * * *        //
//////////////////////////////////////////////////////////////////////

$Hora_Servidor "+2"/*Configurar conforme a hora do servidor*/

$acerto time() + ($Hora_Servidor 60 60);

$hora date("H:i:s"$acerto);
$data date("d-m-Y"$acerto);

if (!
$_SERVER['HTTP_REFERER']) { $_SERVER['HTTP_REFERER'] = "Desconhecido"; }


$max "10000"/*N&#250;mero m&#225;ximo de registos que queremos guardar.*/

$registos "registos.txt";
$linhas   = @count(file($registos));

ignore_user_abort(false);

if (
$linhas >= $max || !file_exists($registos))
$fp = @fopen($registos"w+");
else
$fp = @fopen($registos"a");
 

@
flock ($fpLOCK_EX);
@
fwrite($fp"$data**$hora**".$_SERVER['REMOTE_ADDR']."**".$_SERVER['HTTP_USER_AGENT']."**".$_SERVER['HTTP_REFERER']."\n");
@
flock ($fpLOCK_UN);
@
fclose($fp);

ignore_user_abort(true);
?>

De seguida o ficheiro que mostra as estatísticas numa página HTML:
mostrar.php
Código: [Seleccione]
<?php # MOSTRAR.PHP
//////////////////////////////////////////////////////////////////////
//  Estat&#237;sticas - Data, Hora, IP, Navegador e Origem do Visitante  //
//              * * *  Elaborado por =IceBurn=   * * *              //
//        * * * * * * *   WWW.TENHAMEDO.NET  * * * * * * * *        //
//////////////////////////////////////////////////////////////////////

if (!file_exists("registos.txt"))
{exit(
"!! ERRO !! O ficheiro registos.txt n&#227;o existe!");}

$registos file("registos.txt");
$linha    = @count($registos);

echo 
'<table width="100%" border="0" bgcolor="3366FF" align="center">';

echo 
'<tr>
       <th><font color="white"> Data </font></th>
      <th><font color="white"> Hora  </font></th>
      <th><font color="white"> IP </font></th>
      <th><font color="white"> Navegador </font></th>
      <th><font color="white"> Origem </th>
     </tr>'
;

for (
$i $linha-1$i >= 0$i--) {

$resultado = @explode("**",$registos[$i]);

$resultado[4] = @eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)',
                               
'<a target="_blank" href="\\1">\\1</a>',
                        
$resultado[4]);
                        
$resultado[4] = @eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)',
                               
'\\1<a target="_blank" href="http://\\2">\\2</a>',
                        
$resultado[4]);

echo 
"<tr>
        <td align=\"center\" width=\"70\" bgcolor=\"#99FF33\">
$resultado[0]</td>
        <td align=\"center\" width=\"50\" bgcolor=\"#FFFF00\">
$resultado[1]</td>
        <td align=\"center\" width=\"200\" bgcolor=\"#99FFFC\">
$resultado[2]</td>
        <td width=\"350\" bgcolor=\"#CCFFFF\">
$resultado[3]</td>
        <td width=\"350\" bgcolor=\"#FFFFCC\"><font size=\"1\">"
.$resultado[4]."</font></td>
      </tr>"
;
}

echo 
"</table>\n";
echo 
'<font size="2" color="grey">Elaborado por =IceBurn= (<a href="http://tenhamedo.net/">www.tenhamedo.net</a>)</font>';
?>

Agora, vamos supor que se pretende que isto funcione na página principal do site, para isso basta meter na vossa página index o seguinte:
Código: [Seleccione]
<?php include ("guardar.php"); ?>
E pronto, que comecem as estatísticas. LoL

Depois para terem acesso aos resultados, basta acederem normalmente á página mostrar.php

Como sempre, espero que seja útil a alguem :)
Se tiverem dúvidas, perguntem.  :wink:
Offline

-RJ- 
Membro
Mensagens 1188 Gostos 0
Troféus totais: 30
Trófeus: (Ver todos)
Apple User Super Combination Combination Topic Starter 50 Poll Votes 10 Poll Votes Poll Voter Level 5 Level 4 Level 3

ainda não testei mas parece-me bom o script :)
Offline

chipled 
Membro
Mensagens 1 Gostos 0
Troféus totais: 18
Trófeus: (Ver todos)
Super Combination Combination Level 4 Level 3 Level 2 Level 1 First Post Karma Tenth year Anniversary Nineth year Anniversary

Gostaria de saber se é possivel consertarem os erros de Codificação
do script, para que eu possa testa-lo, pois parece ser um bom script.

Se repararem os codigos irão ver os erros tipo.

Com Erro:
<?php include &#40;"guardar.php"&#41;; ?>

Sem Erro:
<?php include ("guardar.php"); ?>
               
Offline

Nuno 
Administrador
Mensagens 7780 Gostos 216
Feedback +2

Troféus totais: 42
Trófeus: (Ver todos)
100 Poll Votes Level 7 Search Mobile User Level 6 Super Combination Combination Topic Starter 50 Poll Votes 10 Poll Votes

Foi corrigido!
Offline

Spread 
Membro
Mensagens 1433 Gostos 2
Troféus totais: 29
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

Link para verificar como funciona e o mostra.php?

Cumps 8)