Criar Web, manuais e recursos para desenvolvimento web
Manuais
Programas
FAQS
Diretório
Comunidade
  Inicio > Manuais > Workshop de PHP
SEÇÕES
Manuais relacionados
+Workshop de PHP
Categorias
+PHP
+Scripts em PHP

Índice do Manual Workshop de PHP
+ Gestão de ficheiros através de PHP
+ Upload de ficheiros com PHP
+ Verificar a existência de uma URL
+ Leitura sequencial de ficheiros com PHP
+ Escritura em ficheiros com PHP
+ Gestão de directórios com PHP
+ Função que escreve um campo select com valores de uma base de dados
+ Receber o último ID de uma inserção com PHP e MySQL
+ Recolher dados de um Select Multiple com PHP
+ Enviar e-mails pelo PHP
+ Validar um endereço email em PHP
+ Loop para receber todas as variáveis por POST em PHP
+ Enviar um formulário por mail com PHP
+ Paginação de resultados com PHP e MySQL
+ Usuários ativos com PHP
+ Listas de elementos com cores alternas em PHP
+ Programas de livre distribuição em PHP
+ phpMyAdmin
+ Formatação de uma cadeia
+ Cálculo dos dias de um mês em PHP
+ Contador simples para páginas PHP
+ Avaliações dos usuários em PHP
+ Rastrear os robôs de buscadores
+ Recomendar um site usando PHP
+ Criação de um log de erros
+ Comprimir página PHP
+ Contador PHP com imagens
+ Editor PHP Maguma Studio
+ SiteMaps de Google em PHP
+ Teste de velocidade de conexão à Internet
+ Mostrar Conteúdo de acordo com o país em PHP
+ Conteúdos em banco de dados com PHP
+ Problemas com as datas em timestamp Unix de PHP
+ Contar o número de linhas e caracteres em arquivo PHP
+ Transformação Doc, Odt ou Rtf para PDF
+ Preencher um arquivo RTF e gerar o PDF
+ Converter arquivos ods ou xls para pdf
+ PHP isam, ferramenta Web para Arquivos Planos
+ Undefined variable ou Undefined index
+ Agregar carinhas ao sistema
+ Paginator, script para paginação com PHP e MySQL
+ Executar scripts PHP automaticamente através do cron com CURL
+ Uso do FTP com PHP
+ Instalação de One or Zero PHP Helpdesk
+ Portal PHP Nuke
+ Gerando feed RSS de notícias em PHP
+ Blasten blt-SEARCH 1.0.5
+ Classes e Objetos em PHP
+ Recuperando a qualidade de uma imagem JPEG
+ Comprovar se existe o domínio do correio
+ Tutorial de BBCode
+ Função em PHP para o cálculo de minutos transcorridos em duas horas dadas
+ Criação de gráficos em PHP com JpGraph
+ Gerar documentos de Word RTF com PHP
+ Introdução ao Symfony
+ Arredondar decimais em PHP
+ Envio de boletins a e-mails de um banco de dados MySQL
+ Htaccess e páginas dinâmicas
+ Criando imagens com PHP
+ Programar um buscador com PHP e MySQL
+ Loop para receber todos os dados de uma fila de um recordset com PHP
+ Criação de BBcode em PHP
+ Incluir feeds em sua web em 5 passos
+ Calcular dias entre duas datas com PHP
+ Exemplo de conexão com banco de dados Access em PHP
+ Utilizar Curl para copiar uma imagem de uma web em nosso disco rígido
+ Controle da saída em PHP
+ Controle de saída em PHP II
+ Mostrar código PHP de um arquivo com cores ressaltadas

Descrição dos capítulos

Parceiros
- CSS para Web Design
- S.O.S Designers
- Slackware-Brasil
- Crie seu Web site
- Oficina da Net


Usuários ativos com PHP

Veremos como mostrar os usuários ativos em cada momento na nossa página.


No nosso manual de PHP abordámos a utilização de sessões e demos algum exemplo práctico no que este tipo de variáveis podiam ser usadas para dar ao nosso site um aspeto mais dinâmico.

Muitos de vocês podem ter visto em certos sites um contador de usuários que se encontram nesse momento a navegar pelas mesmas páginas que vocês. Se repararam bem, podem ter observado que, na maioria dos casos (por não dizer todos), o site em questão está programado em ASP como linguagem de servidor.

Efetivamente, ASP permite uma gestão mais acessível das sessões através do famoso ficheiro global.asa. Mas isto não quer dizer que PHP seja incapaz de o fazer, o que acontece é, que temos de trabalhar um bocadinho mais para o fazer. A verdade é que todas as linguagens têm os seus pros e os seus contras, e neste caso a verdade é que ASP torna-se mais versátil do que PHP. Mesmo assim, temos de comentar que , com a sua versão 4, PHP melhorou bastante no que diz respeito a sessões.

Aqui mostramos uma maneira simples de contabilizar os usuários ativos do vosso site usando para este propósito uma tabela (array). Dentro desta tabela, iremos armazenando os diferentes endereços IP dos visitantes do nosso site e na hora e data na que o visitante executou por última vez o script.

Deste modo, a tabela tem de ir apagando progressivamente as sessões que não tenham sido renovadas num tempo que nós consideremos limite. Nós fixámos o limite em 24 minutos pois é o tempo pré-definido em PHP para suprimir os dados de uma sessão. Para modificar este tempo de vida máxima de uma sessão pode fazer-se no php.ini a partir do parâmetro sesion.gc_maxlifetime onde expressaremos o valor que queremos em segundos. Atenção, este tempo máximo é restaurado ao seu valor inicial cada vez que o usuário realiza uma petição ao servidor, isto quer dizer que um visitante poderá navegar o tempo que bem entender mantendo a mesma sessão sempre e quando não fique mais de 24 minutos sem realizar nenhum tipo de acção (petição ao servidor).

Para o correcto funcionamento do script, é necessário criar uma tabela na nossa base de dados. Estas sentença SQL pode ajudar-nos na tarefa:

CREATE TABLE control_ip (ip VARCHAR(15) NOT NULL,data INT(14) UNSIGNED NOT NULL,INDEX (ip));

Como podem ver, o campo ip, que armazena o endereço IP do visitante, está indexado. Isto vai nos permitir uma selecção rápida. Em contrapartida, como todos os campos indexados, o seu tamanho em memória será dobrado o qual não tem muita importância pois a tabela terá um numero de registos bastante limitado. O importante é que este script se execute rapidamente sem consumir demasiados recursos do servidor, sobretudo se temos em conta que se trata de um código que será sistematicamente executado em cada uma das páginas do site.

Passemos a seguir a mostrar o script que utilizaremos:

<?
////////////////////////////////////////////
//USUARIOS ATIVOS
//Calcula o número de usuários ativos
////////////////////////////////////////////

function usuarios_ativos()
{
   //permitimos o uso da variável portadora do numero ip na nossa função
   global $REMOTE_ADDR;
   //atribuímos um nome memotecnico à variável
   $ip = $REMOTE_ADDR;
   //definimos o momento actual
   $agora = time();
   //conectamos à base de dados
   //Usem os vossos próprios parâmetros!!
   $conn = mysql_connect($host,$user,$password);
   mysql_select_db($db,$conn);
   //actualizamos a tabela
   //apagamos os registros das ip inactivas (24 minutos)
   $limite = $agora-24*60;
   $ssql = "delete from control_ip where data < ".$limite;
   mysql_query($ssql);
   //vemos se o ip do visitante existe na nossa tabela
   $ssql = "select ip, data from control_ip where ip = '$ip'";
   $result = mysql_query($ssql);
   //se existe actualizamos o campo data
   if (mysql_num_rows($result) != 0)
      $ssql = "update control_ip set data = ".$agora." where ip = '$ip'";
   //se não existe inserimos o registro correspondente à nova sessão
   else       $ssql = "insert into control_ip (ip, data) values ('$ip', $agora)";
   //executamos a sentença sql mysql_query($ssql);
   //calculamos o número de sessões
   $ssql = "select ip from control_ip";
   $result = mysql_query($ssql);
   $usuarios = mysql_num_rows($result);
   //liberamos memória mysql_free_result($result);
   //retornamos o resultado return $usuarios;}
?>


Podem observar, como vem sendo habitual, que o script é expressado em forma de função. Depois de definir a IP e o momento no que o script está a ser executado, passamos a interaccionar com a base de dados. Dentro deste processo, podemos diferenciar diferentes fases:
  • Conexão com a base de dados
  • Recorrido da tabela para eliminar os registos obsoletos.
  • Inserção ou actualização de um registo dependendo de se o visitante é novo ou não.
  • Contagem do número de registos da tabela

A função finaliza liberando o espaço de memória utilizada nas suas consultas e enviado o resultado do cálculo efectuado.

Em linhas gerais o script é de fácil compreensão. Pode que alguma das funções utilizadas vos seja desconhecida. Se assim for, acudam à página oficial de PHP onde poderão encontrar mais detalhes.

Para obter o valor proporcionado pela função ao nosso script principal teremos de realizar uma chamada clássica do tipo:

$active_users = usuarios_ativos();

Em definitiva, aqui temos um script simples que pode dar ao vosso site uma imgem um pouco mais dinâmica. Para alem disso, podem utiliza-lo e melhora-lo para criar o vosso próprio sistema de estatísticas internas. Isso fica com vocês...

Autoria e outras referências sobre este artigo

Manuais relacionados com este artigo
Dentro de Workshop de PHP

Categorias relacionadas
Através das categorias do nosso diretório podem ser encontrados outros tipos de recursos relacionados com este artigo:
+ Entrar em PHP
+ Entrar em Scripts em PHP


Comentário sem rever
Entre os comentários não revistos podem ter alguns interessantes que tenham sido enviado recentemente.
 Foi encontrado um comentário sem rever

VerVer os comentários não revistos



Sobre nós | Copyright | Anuncie | Entrar em contato <criarweb>

Hospedado por Hostnet Hospedagem de Sites