Caminho de Navegação Cgi / perl / Tutoriais / Sistema de usuários online

Nenhuma avalição
Indique ao Ueba Indique ao BlogBlogs Indique ao Delicious Indique ao Technorati Indique ao Google Bookmarks Indique ao Newsgator
TAGS

Nenhuma tag foi definida ainda!

Defina as tags para esta página preenchendo o campo abaixo.

  • Máximo de 100 tags
  • Cada tag deve ter até 20 caracteres.
  • Separar as tags com virgula. Ex.: php, sql, html, xml, fireworks
COMENTAR

INDICAR
Nome do amigo: E-mail do amigo: Comentário:
REPORTAR ERRO Descreva o erro:

Sistema de usuários onlinePostada em: 15/08/2004

Zenilto
Por: Zenilto Nº de Visualizações: 4377.



#!/usr/bin/perl

####################################
# Usuários Online #
####################################
# Para mostrar o usuarios coloque a linha abixo em seu
site
# <script language="JavaScript"
src="http://www.seusite.com.br/user_online.cgi"></script>
# salve o arquivo como user_online.cgi
####################################

# Minutos para um IP ser Valido
$minutes = 3;
$ip = $ENV{'REMOTE_ADDR'};
$time = time;
$found = 0;
$users = 0;
# Se não existir o arquivo user.txt ele sera
automaticamente criado.
if (! (-f "users.txt")){
open (CREATE, ">users.txt");
close CREATE;
chmod(0666, "users.txt");
}
open FILE,"+<users.txt";
&lock(FILE);
@users = <FILE>;
chomp(@users);
seek(FILE,0,0);
truncate(FILE,0);
foreach $line (@users)
{
($savedip,$savedtime) = split/\|/,$line;
if ($savedip eq $ip) {$savedtime = $time;$found = 1;}
if ($time < $savedtime + ($minutes * 60))
{
print FILE "$savedip|$savedtime\n";
$users = $users + 1;
}
}
if ($found == 0)
{
print FILE "$ip|$time\n";
$users = $users + 1;
}
close (FILE);
$log="counter.txt";
open (FILE,$log);
$counter=<FILE>;
close(FILE);
$counter++;
open (WRITE,">$log");
print WRITE "$counter";
close(WRITE);
print "Content-type: text/javascript\n\n";
print qq~document.write\('visitantes online $users'\)
\;~;
exit;
sub lock
{
my $lock = 0;
while ($lock < 5)
{
if (flock(@_[0], 2)) {return 0;}
sleep (1);
$lock++;
}

exit;
}