Sistema de banner c/ Estats
Salve!
Planejava isso a muito tempo, mas eu começava e parava... :P
Mas finalmente está na área....
Sistema de Banner rotativo com BD .txt.
Quem gostou levanta a mão!
o/
HEHEHE...
Vamos aos script...
O negócio é o seguinte:
Eu fiz o banco de dados .TXT dividido em colunas, igual o BD do mySQl e outros que vocês conhecem...
A ordem das colunas fica:
URL|+|URLbanner|+|ALT|+|Quant.deViews|+|Quant.deClicks
O separador como pode ser visto é o |+|.
Por exemplo:
http://www.wmonline.com.br|+|http://www.wm...r.gif|+|Visitem agora!|+|0|+|0
Ok!?
Se quiser deixar sem link, basta deixar sem valor.
Mas deixe sempre o separador |+|.
Class.php
<?php/** @ Produzido por: Felipe Nascimento @ Sistema de banner rotativo |- As imagens podem ter links ou não. |- A quantidade de cliques e visualizações ficarão armazenadas no .txt**/class Sistema{ // Arquivo .txt que armazena as informações do banner var $Bd = "registros.txt"; // Exibe a quantidade de imagem definida // Altera o banco de dados function getIMG($nQuant) { $nRegs = count($this->arqConteudo( )); $nSort[] = $nRand = rand(0, $nRegs - 1); for ($i=1; $i<=$nQuant; $i++) { if ($i != 1) { $nRand = rand(0, $nRegs - 1); while (in_array($nRand, $nSort)) $nRand = rand(0, $nRegs - 1); $nSort[] = $nRand; } $aReg = $this->arqConteudo( ); $sReg = $aReg[$nRand]; $novoValor = $this->addValor("view", $sReg); $modificado = $this->arqModificar($novoValor); $aReg = $this->arqConteudo( ); $Banner = $aReg[$nRand]; $aInfo = explode("|+|", $Banner); $out .= ($aInfo[0]) ? "<a href="{$_SERVER["PHP_SELF"]}?url={$aInfo[0]}" target="_blank">": ""; $out .= "<img src="{$aInfo[1]}" border="0" alt="{$aInfo[2]}">"; $out .= ($aInfo[0]) ? "</a>" : ""; $out .= ""; } return ($out); } // Lê todo o BD e quarda todo o seu valor // modifica a linha com novo valor definido na função. function arqModificar($sValor) { $aDiv = explode("|+|", $sValor); $expr = "{$aDiv[0]}|+|{$aDiv[1]}|+|{$aDiv[2]}|+|.*"; foreach ($this->arqConteudo( ) AS $Conteudo) if (eregi("$expr", $Conteudo)) $novoConteudo .= $sValor; else $novoConteudo .= $Conteudo; $this->arqSalvar($novoConteudo); } // Grava no BD a alteração sofrida // após o uso da função arqModificar() function arqSalvar($sValor) { $arqAbrir = fopen($this->Bd, "w"); $arqEscrever = fwrite($arqAbrir, $sValor); fclose($arqAbrir); } // Acrescenta +1 ao valor existente // seja de clicks ou de views function addValor($sTipo, $sLinha) { $aDiv = explode("|+|", $sLinha); if ($sTipo == "view") $aDiv[3] = ($aDiv[3] + 1); if ($sTipo == "click") $aDiv[4] = ($aDiv[4] + 1) ."rn"; return (join("|+|", $aDiv)); } // Coloca todo o valor do arquivo // em um array. function arqConteudo( ) { return (file($this->Bd)); } // Faz uma busca no BD pela url // se existir acrescenta +1 ao valor // da view com a função addValor() // e redireciona para a url indicada. function getURL($url) { foreach ($this->arqConteudo( ) AS $Conteudo) { $aDiv = explode("|+|", $Conteudo); if ($aDiv[0] == $url) { $sReg = join("|+|", $aDiv); $novoValor = $this->addValor("click", $sReg); $modificado = $this->arqModificar($novoValor); return ("<META HTTP-EQUIV="refresh" CONTENT="0;url={$url}">"); } } return "URL não encontrada no banco de dados!"; } function Estats( ) { $out .= "<table border="1" bordercolor="#f4f4f4">[tr]"; $out .= "<td bgcolor="#f4f4f4"> <font face="verdana" size="2">URL</font></td>"; $out .= "<td bgcolor="#f4f4f4"> <font face="verdana" size="2">URL banner</font></td>"; $out .= "<td bgcolor="#f4f4f4"> <font face="verdana" size="2">Alt</font></td>"; $out .= "<td bgcolor="#f4f4f4"> <font face="verdana" size="2">Views</font></td>"; $out .= "<td bgcolor="#f4f4f4"> <font face="verdana" size="2">Clicks</font></td>"; $out .= "[/tr]"; foreach ($this->arqConteudo( ) AS $Conteudo) { $aInfo = explode("|+|", $Conteudo); $out .= "[tr]<td><font face="verdana" size="1">"; $out .= $aInfo[0]; $out .= "</font></td><td><font face="verdana" size="1">"; $out .= $aInfo[1]; $out .= "</font></td><td><font face="verdana" size="1">"; $out .= $aInfo[2]; $out .= "</font></td><td><font face="verdana" size="1"> <center>"; $out .= $aInfo[3]; $out .= "</font></td><td><font face="verdana" size="1"> <center>"; $out .= $aInfo[4]; $out .= "</font></td>[/tr]"; } $out .= "</table>"; return ($out); }}// Instanciando a Classe.$Sist = new Sistema;?>
Banner.php
<?phpinclude("Class.php");// Verificando se há valor na// variável ?url=if ($_GET["url"]) echo $Sist->getURL($_GET["url"]);else // Exibe a quantidade definida de banners echo $Sist->getIMG(1);?>[/php][b]Estats.php[/b][php]<?phpinclude("Class.php");// Exibindo estatísticas dos bannersecho $Sist->Estats( );?>
registros.txt
http://www.wmonline.com.br|+|http://www.wm...3;!|+|0|+|0
Como visualizo as estatísticas?Basta você acessar o arquivo Estats.php via browser.
Como modificar a quantidade de banners a serem visualizados?
É só você olha no arquivo Banner.php que eu deixei descrito lá:
>
// Exibe a quantidade definida de banners
echo $Sist->getIMG(1);
O número 1 é a quantidade de imagens a serem exibidos, lembrando que você não pode definir uma quantidade maior do que a quant. de banners existente no sistema.. (que idéia.. :P )
Mas como adicionar mais banners no sistema?
Basta você alterar no .txt e colocar todas as informações em ordem.
Sempre coloque um "registro" abaixo do outro.
>
registro
registro
Por que dá erro na Permission?Você tem que dar chmod 777 no arquivo .TXT para que possa ser executadas as ações detinadas a ele no sistema.
Qualquer dúvida quanto ao chmod faça uma busca no fórum, tem muitos tópicos a respeito.
http://forum.imasters.com.br/public/style_emoticons/default/bye1.gif
Discussão (8)
Carregando comentários...