Contador de Visitas Gráfico Utilizando GD
Utilizando os artigos "Instalando Apache + PHP em ambientes Windows" de Marcelo Rodrigo e retirando o ponto e vírgula do inicio da linha ;extension=php_gd.dll do PHP.INI, temos a biblioteca GD disponível. E, utilizando "Gerando Imagens Dinamicamente" de Luiz Gustavo Cardoso Ribeiro, temos uma boa idéia de como usar a GD.
O script pode ser melhorado e adicionado novas funções, isso fica a cargo de quem precisar usar. Espero ter contribuído com algo.
Primeiro, vamos criar um arquivo chamado counter.php:
counter.php
Na próxima página, irei mostrar um exemplo de chamada do arquivo counter.php, com as várias ações que ele possui.
O script pode ser melhorado e adicionado novas funções, isso fica a cargo de quem precisar usar. Espero ter contribuído com algo.
Primeiro, vamos criar um arquivo chamado counter.php:
counter.php
<?php // se não informou cor de fundo, escolhe a cor if (empty($bg)) { $bg = 1; } // se não informou cor da fonte, escolhe a cor if (empty($fg)) { $fg = 2; } // se nao informou cor da borda, seta a mesma cor do fundo if (empty($bc)) { $bc = $bg; } // como chegar ao conteúdo da variável CONTADOR, depende de // que processo você irá utilizar: banco de dados, arquivo texto... $contador = "0500321"; // Número de exemplo // INFORMA AO BROWSER QUE TIPO DE IMAGEM SERÁ CRIADA Header("Content-type: image/png"); // TAMANHO x E y DA FIGURA $x = 47; $y = 12; // ESTILO DA FONTE default: 2 (não negrito) $fonte = 2; // SE QUISER NEGRITO (da fonte 2 para 3, cria uma idéia de negrito) if (isset($ng)) { $fonte = 3; $x += 7; // aumenta o tamanho da imagem } // CRIA A IMAGEM $img = imagecreate($x,$y); // PALETA DE CORES $branco = ImageColorAllocate($img,255,255,255); $preto = ImageColorAllocate($img,0,0,0); $verde = ImageColorAllocate($img,0,100,0); $vermelho = ImageColorAllocate($img,255,0,0); $azul = ImageColorAllocate($img,0,0,255); $amarelo = ImageColorAllocate($img,255,255,0); $corderosa = ImageColorAllocate($img,255,0,255); // função para escolher a cor de cada estapa // a paleta poderia logo ser criada dentro dela function cor($var) { global $contador,$branco,$preto,$verde,$vermelho,$azul,$amarelo,$corderosa; switch($var) { case 1: return $branco; break; case 2: return $preto; break; case 3: return $verde; break; case 4: return $vermelho; break; case 5: return $azul; break; case 6: return $amarelo; break; case 7: return $corderosa; break; default: $contador="erro"; } } // distancia x da lateral esqueda do início da figura $px = 3; // distancia y do topo do início da figura $py = -1; // ESCOLHE COR DO FUNDO $bg = cor($bg); // PINTA O FUNDO ImageFilledRectangle($img,0,0,$x,$y,$bg); // ESCOLHE A COR DA BORDA $bc = cor($bc); // PINTA A BORDA ImageRectangle($img,0,0,$x-1,$y-1,$bc); // DEFINE TRANSPARENCIA if (isset($tp)) { // ESCOLHE A COR DA TRANSPARENCIA $tp = cor($tp); ImageColorTransparent($img,$tp); } // ESCOLHE COR DA FONTE $fg = cor($fg); // ESCREVE O NUMERO ImageString($img,$fonte,$px,$py,$contador,$fg); // CONVERTE A IMAGEM PARA PNG ImagePNG($img); // DESTROI A IMAGEM ImageDestroy($img); ?>
Na próxima página, irei mostrar um exemplo de chamada do arquivo counter.php, com as várias ações que ele possui.
Páginas:
1
2
dê um phpinfo() e verifique se a gd está habilitada.. sem esse tipo de suporte, os script do tipo não funcionarão
20/05/2002 8:52am
(~22 anos atrás)
na instalação do php, tente usar isto:
./configure -with-gd=/path_para_a_gd_lib
./configure -with-gd=/path_para_a_gd_lib
20/05/2002 6:58am
(~22 anos atrás)
a GD roda com PHP, é nele que se habilita a biblioteca.. e se o php estiver rodando certinho no IIS, entao deveria estar funcionando...
20/05/2002 6:55am
(~22 anos atrás)
se aparece o numero é porque a imagem foi gerada.. no caso o gráfico seria isso!
20/05/2002 6:52am
(~22 anos atrás)
Infelizmente - de verdade - só consigo fazer suposições pra esse problema, quem sabe infundadas.. ou não.. já que nunca usei leitura de arquivos pra esse tipo de movimentação intensa...
1) já que o script retorna a imagem formada (vc nao comentou erro na imagem), o problema pode estar acontecendo na leitura do arquivo. Quem sabe, leitura enquanto ele está aberto por outro visitante para escrita e consequentemente, vazio, retornando 0, que depois é gravado por cima do conteúdo anterior.. reiniciando o contador.
2) experimente usar uma base de dados pra ver como se comporta.. e nos dê uma resposta, pois também fiquei curioso agora..
E se alguma outra pessoa tiver uma idéia formada mais segura a esse respeito.... esteja à vontade..
1) já que o script retorna a imagem formada (vc nao comentou erro na imagem), o problema pode estar acontecendo na leitura do arquivo. Quem sabe, leitura enquanto ele está aberto por outro visitante para escrita e consequentemente, vazio, retornando 0, que depois é gravado por cima do conteúdo anterior.. reiniciando o contador.
2) experimente usar uma base de dados pra ver como se comporta.. e nos dê uma resposta, pois também fiquei curioso agora..
E se alguma outra pessoa tiver uma idéia formada mais segura a esse respeito.... esteja à vontade..
10/05/2002 7:41am
(~22 anos atrás)
Para instala a GD basta ir no arquivo PHP.INI e retirar o ; que fica na frente de php_gd.dll? Não tenho que instalar nenhum arquivo?
03/05/2002 9:22pm
(~22 anos atrás)
Instale a GD no PHP da mesma forma que você sabe instalar caso fosse usar o Apache: abra o PHP.INI, indique corretamente o diretório de extensões do PHP na diretiva de configuração "extension_dir", descomente a linha ;extension=php_gd.dll e salve seu arquivo, se for usar o PHP 4.2, deve-se usar a php_gd2.dll.
Sobre o Omni, que nunca usei, talvez esse endereço possa ajudar mais que eu: "http://www.portalapucarana.com.br/phpport/install-windows95-nt.html" ...tem uma instalação com PHP pra Omni lá..
Sobre o Omni, que nunca usei, talvez esse endereço possa ajudar mais que eu: "http://www.portalapucarana.com.br/phpport/install-windows95-nt.html" ...tem uma instalação com PHP pra Omni lá..
02/05/2002 12:30pm
(~22 anos atrás)
Então como faço para instalar o GD no PHP e como fazer o Omni enxergar ele?
02/05/2002 11:38am
(~22 anos atrás)
É no php que você tem que instalar a GD. No omni você só precisa fazêr com que ele enxergue php.
02/05/2002 7:31am
(~22 anos atrás)
abs