Usuários Online C/ Txt
#1
Posted 20/01/2005, 16:24
O que ele faz, ao entrar verifica se o ip ja nao existe na lista, caso seje encontrado apenas atualiza o timeout, se nao existir cadastra o ip na lista.
A cada acesso faz uma busca e elimina os registros expirados.
PHP |
<?php class UsersOnline{ var $StrPatch; var $TimeOut; //Verifica se o ip consta na lista function Verifica($IpNow){ $Arquivo = @file($this->StrPatch); $Reg = count($Arquivo); for($i=0;$i<$Reg;$i++){ list($Ip,,) = explode("|",$Arquivo[$i]); if($Ip!=$IpNow) continue; return $i; } } //Limpa ips com data expirada function Limpar(){ $DataAgora = date("YmdHis"); $Arquivo = @file($this->StrPatch); $Arquivo2 = @fopen($this->StrPatch,"w+"); $Reg = count($Arquivo); for($i=0;$i<$Reg;$i++){ list($Ip,$Data) = explode("|",$Arquivo[$i]); if($Data>$DataAgora){ fwrite($Arquivo2,"$Ip|$Data"); } } fclose($Arquivo2); } //Cadastra o novo ip na lista function Salva(){ $IpAgora = $_SERVER['REMOTE_ADDR']; $DataAgora = (date("YmdHis")+$this->TimeOut); $Arquivo = fopen($this->StrPatch,"a"); fwrite($Arquivo,"$IpAgora|$DataAgora\n"); fclose($Arquivo); } //Atualiza o ip na lista function Update($Linha){ $IpAgora = $_SERVER['REMOTE_ADDR']; $DataAgora = (date("YmdHis")+$this->TimeOut); $Arquivo = @file($this->StrPatch); $Arquivo2 = @fopen($this->StrPatch,"w+"); $Reg = count($Arquivo); for($i=0;$i<$Reg;$i++){ list($Ip,$Data) = explode("|",$Arquivo[$i]); if($i == $Linha) fwrite($Arquivo2,"$IpAgora|$DataAgora\n"); else fwrite($Arquivo2,"$Ip|$Data"); } fclose($Arquivo2); } //Verifica quantos estão online function Online(){ $Arquivo = @file($this->StrPatch); $Reg = count($Arquivo); return $Reg; } } //Inicio $online = new UsersOnline(); $online->StrPatch = 'online.txt'; $online->TimeOut = 200; $Linha = $online->Verifica($_SERVER['REMOTE_ADDR']); if(is_null($Linha)){ $online->Limpar(); $online->Salva(); $On = $online->Online(); } else{ $online->Update($Linha); $online->Limpar(); $On = $online->Online(); } echo($On." usuários online!"); ?> |
Edição feita por: {TeRmInAtOr}, 21/01/2005, 19:31.
#2
Posted 12/02/2005, 21:41
se apenas uma pessoa estiver na pagina,
exibe USUARIO ONLINE (SINGULAR)
e se mais de uma estiver exibe USUARIOS ONLINE (PLURAL)
<?php
$number="1";
class UsersOnline{
var $StrPatch;
var $TimeOut;
//Verifica se o ip consta na lista
function Verifica($IpNow){
$Arquivo = @file($this->StrPatch);
$Reg = count($Arquivo);
for($i=0;$i<$Reg;$i++){
list($Ip,,) = explode("|",$Arquivo[$i]);
if($Ip!=$IpNow)
continue;
return $i;
}
}
//Limpa ips com data expirada
function Limpar(){
$DataAgora = date("YmdHis");
$Arquivo = @file($this->StrPatch);
$Arquivo2 = @fopen($this->StrPatch,"w+");
$Reg = count($Arquivo);
for($i=0;$i<$Reg;$i++){
list($Ip,$Data) = explode("|",$Arquivo[$i]);
if($Data>$DataAgora){
fwrite($Arquivo2,"$Ip|$Data");
}
}
fclose($Arquivo2);
}
//Cadastra o novo ip na lista
function Salva(){
$IpAgora = $_SERVER['REMOTE_ADDR'];
$DataAgora = (date("YmdHis")+$this->TimeOut);
$Arquivo = fopen($this->StrPatch,"a");
fwrite($Arquivo,"$IpAgora|$DataAgora\n");
fclose($Arquivo);
}
//Atualiza o ip na lista
function Update($Linha){
$IpAgora = $_SERVER['REMOTE_ADDR'];
$DataAgora = (date("YmdHis")+$this->TimeOut);
$Arquivo = @file($this->StrPatch);
$Arquivo2 = @fopen($this->StrPatch,"w+");
$Reg = count($Arquivo);
for($i=0;$i<$Reg;$i++){
list($Ip,$Data) = explode("|",$Arquivo[$i]);
if($i == $Linha)
fwrite($Arquivo2,"$IpAgora|$DataAgora\n");
else
fwrite($Arquivo2,"$Ip|$Data");
}
fclose($Arquivo2);
}
//Verifica quantos estão online
function Online(){
$Arquivo = @file($this->StrPatch);
$Reg = count($Arquivo);
return $Reg;
}
}
//Inicio
$online = new UsersOnline();
$online->StrPatch = 'online.txt';
$online->TimeOut = 200;
$Linha = $online->Verifica($_SERVER['REMOTE_ADDR']);
if(is_null($Linha)){
$online->Limpar();
$online->Salva();
$On = $online->Online();
}
else{
$online->Update($Linha);
$online->Limpar();
$On = $online->Online();
}
if($On == $number)
echo"$On usuário online!";
else
echo ($On." usuários online!")
?>
Espero ter ajudado,
VLW !!!
#3
Posted 19/02/2005, 08:38
Ex.:
Eu quero que os resultados sejam multiplicados por 2.
Sendo assim se eu tiver 10 acessos, irá aparecer que eu tenho 20
Como que ficaria o codigo trabalhando desta forma?
Edição feita por: LGF, 19/02/2005, 08:41.
#4
Posted 19/02/2005, 08:42
$On2 = $On*2;
echo ($On2." usuários online!")
#5
Posted 08/04/2005, 21:34
$nome = "Guilherme Rambo";
$local = "S. S. do Caí - RS";
echo $nome;
echo $local;
?>
#6
Posted 04/08/2008, 17:38
Supondo que só eu esteja acessando o site... quando entro pela 1a. vez no site aparece ZERO para o contador (penso que deveria ser UM)... quando dou um "reload" ... aparece UM... se eu fizer um "reload" mais uma vez... aparece ZERO...
E fica nesse ZERO e UM...
Tem alguma coisa errada... procurei olhar com calma o script mas não consegui achar onde estaria o "erro".. será que o autor poderia me ajudar ??
Edição feita por: Goulart, 04/08/2008, 17:38.
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)