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
(~23 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
(~23 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
(~23 anos atrás)
se aparece o numero é porque a imagem foi gerada.. no caso o gráfico seria isso!
20/05/2002 6:52am
(~23 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
(~23 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
(~23 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
(~23 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
(~23 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
(~23 anos atrás)
abs