← Tutoriais

[PHP] Guardar Info dos utilizadores em ficheiro de texto

Lida 10217 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

O código que se segue é muito fácil de instalar e a sua função é gravar num documento de texto várias informações dos utilizadores que visitam o site.

Para isto basta adicionar o seguinte código na página pretendida:

Código: [Seleccione]
<?
//IceBurn - 2006

//Aqui vamos determinar como irá ser apresentada a data
$tdate = date("dS F Y h:i:s A");

//Verificar se existe
if (!$HTTP_REFERER) { $HTTP_REFERER = "(NONE)"; }


//Os resultados irão depois ser gravados
$fp = fopen("registos.txt", "a");
$line = "IP: $REMOTE_ADDR - Data: $tdate - Referer: $HTTP_REFERER - Navegador: $HTTP_USER_AGENT\n";
fwrite($fp, $line);
fclose($fp);

//Podemos ainda incluir a informação obtida na própria página
echo "A sua IP é $REMOTE_ADDR<br>";
echo "Hoje é $tdate<br>";
echo "Acesso por $HTTP_REFERER";
?>


Guarda-se o ficheiro modificado e cria-se um documento de texto ao qual vamos chamar de registos.txt e faz-se o upload do mesmo no servidor na directoria onde temos a página que vamos monitorizar.
Atenção: é necessário dar a permissão 777 ao ficheiro de texto!

Assim toda a informação dos utilizadores que visitam a página será guardada no ficheiro registos.txt do qual podemos apagar a informação sempre que quisermos, até porque se não o fizermos este ficheiro vai atingir tamanhos exorbitantes!

Aqui fica então este código básico que pode ser modificado segundo as necessidades de cada um, visto que é possivel guardar outra qualquer informação que pretendam (desde que exista lol) .
Offline

fpware 
Fundador
Mensagens 15318 Gostos 6
Troféus totais: 38
Trófeus: (Ver todos)
Linux User Mobile User Level 6 Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5

Muito bom tutorial =IceBurn=! Muito obrigado!
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

Citação de: "fpware"
Muito bom tutorial =IceBurn=! Muito obrigado!


É um prazer partilhar conhecimentos no +Tráfego  :wink:
Sempre que puder contribuir com alguma coisa, falo-ei.
Offline

fpware 
Fundador
Mensagens 15318 Gostos 6
Troféus totais: 38
Trófeus: (Ver todos)
Linux User Mobile User Level 6 Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5

Esse é o espírito do +tráfego :D
Offline

cenourinha 
Elite
Mensagens 4094 Gostos 21
Troféus totais: 34
Trófeus: (Ver todos)
Mobile User Apple User Level 6 Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4

Mas isso só vai guardar a de um, e depois vai substituir quando entrar outro né?
Offline

kingless 
Membro
Mensagens 857 Gostos 0
Troféus totais: 27
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2 Level 1

Não!!
Vai ficar uma linha embaixo da outra
Offline

cenourinha 
Elite
Mensagens 4094 Gostos 21
Troféus totais: 34
Trófeus: (Ver todos)
Mobile User Apple User Level 6 Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4

Sim, por causa do /n
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

Citação de: "kingless"
Não!!
Vai ficar uma linha embaixo da outra


Precisamente! :)

Assim toda a informação ficará guardada até que a apagues manualmente, daí eu referir que o ficheiro de texto pode atingir tamanhos enormes, convém ir apagando os resultados de vez em quando para poupar espaço no servidor.
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

E juntamente podemos ainda exigir que a IP guardada seja a IP real e não a de um proxy anonimo caso o utilizador nos queira pregar uma rasteira, basta criar uma nova variável e adicionar algumas linhas ao código:


Código: [Seleccione]
<?
//IceBurn - 2006
 
//Determinar a IP real
$ip = isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] :
$_SERVER['REMOTE_ADDR'];

//Aqui vamos determinar como irá ser apresentada a data
$tdate = date("dS F Y h:i:s A");

//Verificar se existe
if (!$HTTP_REFERER) { $HTTP_REFERER = "(NONE)"; }


//Os resultados irão depois ser gravados
$fp = fopen("registos.txt", "a");
$line = "IP: $ip - Data: $tdate - Referer: $HTTP_REFERER - Navegador: $HTTP_USER_AGENT\n";
fwrite($fp, $line);
fclose($fp);

//Podemos ainda incluir a informação obtida na própria página
echo "A sua IP é $ip<br>";
echo "Hoje é $tdate<br>";
echo "Está a utilizar $HTTP_REFERER";
?>
Offline

fpware 
Fundador
Mensagens 15318 Gostos 6
Troféus totais: 38
Trófeus: (Ver todos)
Linux User Mobile User Level 6 Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5

Bom acrescento =IceBurn=!
Offline

kingless 
Membro
Mensagens 857 Gostos 0
Troféus totais: 27
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2 Level 1

Citação de: "cenourinha"
Sim, por causa do \n


E tambem por causa disto:

Código: [Seleccione]

$fp = fopen("registos.txt", "a");


Por causa do "a"  tambem,  se ele não colocasse "a"  não ia escrever uma linha embaixo da outra mesmo com o \n
 :wink:
Offline

OFFICER 
Membro
Mensagens 2076 Gostos 0
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

Epá..é muito bom para fazer estatísticas! :D
Offline

asturmas 
Administrador
Mensagens 19734 Gostos 49
Feedback +2

Troféus totais: 39
Trófeus: (Ver todos)
Mobile User Windows User Super Combination Combination Topic Starter 100 Poll Votes 50 Poll Votes 10 Poll Votes Poll Voter Poll Starter

Excelente!
VOu ver o que faço com isto, e pena ke n o possa colocar no morangomanias senao ficava sem espaço no servidor lol
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

Citação de: "asturmas"
Excelente!
VOu ver o que faço com isto, e pena ke n o possa colocar no morangomanias senao ficava sem espaço no servidor lol


Mas isso resolve-se!

Tipo assim:
Código: [Seleccione]
<?
//IceBurn - 2006

//Aqui vamos determinar como irá ser apresentada a data
$tdate = date("dS F Y h:i:s A");

//Verificar se existe
if (!$HTTP_REFERER) { $HTTP_REFERER = "Desconhecido"; }

//Determinar o número máximo de registos que queremos guardar
$max = "10000";
$registos= "registos.txt";
$linhas = @count(file($registos));

if ($linhas>=$max || !file_exists($registos))
$fp = fopen($registos, "w+");
else
$fp = fopen($registos, "a");
 
$line = "IP: $REMOTE_ADDR - Data: $tdate - Referer: $HTTP_REFERER - Browser: $HTTP_USER_AGENT\n";
fwrite($fp, $line);
fclose($fp);

//Podemos ainda incluir a informação obtida na própria página
echo "A sua IP é $REMOTE_ADDR<br/>";
echo "Utiliza $HTTP_USER_AGENT<br/>";
echo "Hoje é $tdate<br/>";
echo "Acesso por $HTTP_REFERER";
?>


Alem de te apagar o log depois de $max entradas, ainda te cria o ficheiro registos.txt se este não existir.
Não testei com estas modificações, mas tou convencido que não vai dar erros, no entanto se der avisem :)

 :wink:

PS: O código tinha um pequeno erro e já foi corrigido.
Offline

kingless 
Membro
Mensagens 857 Gostos 0
Troféus totais: 27
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2 Level 1

LOL, o asturmas postou essa mensagem em abril  já estamos em julho :lol: