Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
o q é isso q começou a aparecer de repente, sem eu ter modificado nada até então:Fatal error: Maximum execution time of 30 seconds exceeded in /home/jfjcom/public_html/Class.php on line 26
tem como implementar um swf nesse banner?if(arquivo for swf)mostrar swfelsemostrar imagemtambem existe a possibilidade de centralizar o banner?onde faço isso?DESCE ------->>>>
Galera fiz umas gambiarras, e consegui fazer uma integração
com este script de banner em txt + banners rotativos de swf.
Obs. (São cada um separado do outro, apenas fiz um random
entre os dois)
Ai vão os códigos:
// Codigo de aparecer os banners jpg:
Banner.php
<?include("Class.php");if ($_GET["url"])echo $Sist->getURL($_GET["url"]);elseecho $Sist->getIMG(1);?>// Codigo de aparecer os banners swf: (coloque os banners swf nesse arquivo)Bannerswf.php
<?/** by Simor* Descrição: Código muito simples em PHP para banners randômicos de arquivos formato SWF.* Basta listar o caminho dos arquivos, na quantidade que quiser dentro do código.* A cada troca de link ele busca um novo banner listado.**/$width="450"; // largura$height="90"; // altura// quantidade não limitada, colocar o caminho dos *.SWF abaixo$banners = array('swf/bannerl.swf','swf/banner2.swf','swf/banner3.swf','swf/banner4.swf');// randômico$random_no = count($banners);$random = $random_no-1;mt_srand ((double) microtime () * 1000000);$rnd = mt_rand(0,$random);// visualização$banner=$banners[$rnd];echo( "<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"[http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0\"width=\"$width\"](http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0%5C) height=\"$height\"><param name=\"movie\" value=\"$banner\"><param name=\"quality\" value=\"high\"><embed src=\"$banner\" quality=\"high\" pluginspage=\"[http://www.macromedia.com/go/getflashplayer\"type=\"application/x-shockwave-flash\"](http://www.macromedia.com/go/getflashplayer%5C) width=\"$width\" height=\"$height\"></embed></object> ");?>// AQUI ESTA O SEGREDO... RSRS... // Codigo de aparecer hora o jpg, hora o swf.
centralizado.php
<style type="text/css"><!--body { margin-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px;}--></style><table width="100%" height="120" border="0" cellpadding="0" cellspacing="0" bordercolor="#D5DAE0"> <tr> <td bordercolor="#D5DAE0" bgcolor="#F0F5F9"><div align="center"></div> <div align="center"> <?php $pg = rand(1, 3); if($pg == 1){ include("Banner.php"); }elseif($pg == 2){ include("Bannerswf.php"); }else{ include("Banner.php"); }?> </div></td> </tr></table>// Classe do banner jpgClass.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 .= "<br />"; } 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) ."\r\n"; 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\"><b>URL</b></font></td>"; $out .= "<td bgcolor=\"#f4f4f4\"> <font face=\"verdana\" size=\"2\"><b>URL banner</b></font></td>"; $out .= "<td bgcolor=\"#f4f4f4\"> <font face=\"verdana\" size=\"2\"><b>Alt</b></font></td>"; $out .= "<td bgcolor=\"#f4f4f4\"> <font face=\"verdana\" size=\"2\"><b>Views</b></font></td>"; $out .= "<td bgcolor=\"#f4f4f4\"> <font face=\"verdana\" size=\"2\"><b>Clicks</b></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;?>// Estatisticas *apenas dos banners jpgEstats.php
<?include("Class.php");// Exibindo estatísticas dos bannersecho $Sist->Estats( );?>// Arquivo txt onde deve ser colocado os banner (jpg)registros.txt
http://www.google.com|+|http://www.google.com.br/google.jpg|+|Google!!|+|0|+|0obs. deve ser colocado um em cada linha seguindo o modelo.
UFA,
Para aparecer o banner coloque um include de centralizado.php,
ou um iframe, caso a página seja html.
Exemplo:
PHP
[*]
[*]<?php
[*]include("centralizado.php");
[*]?>
[*]
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><div align="center"><iframe name="banner" width="100%" height="120" border="0" frameborder="0" src="centralizado.php" scrolling="no" align="center">
</iframe>
</div></td>
</tr>
</table>
Créditos aos seus devidos autores: Felipe Nascimento e Simor.
Flw.
continua aparecendo este erro:
Fatal error: Maximum execution time of 30 seconds exceeded in /home/jfjcom/public_html/Class.php on line 26
e em outras paginas as vezes aparece:
Fatal error: Maximum execution time of 30 seconds exceeded in /home/jfjcom/public_html/Class.php on line 27
alguem sabe o q é?
o site: www.jfj.com.br
ninguém??socorro!!!
class.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 .= "<br />";
}
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) ."\r\n";
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\"><b>URL</b></font></td>";
$out .= "<td bgcolor=\"#f4f4f4\">
<font face=\"verdana\" size=\"2\"><b>URL banner</b></font></td>";
$out .= "<td bgcolor=\"#f4f4f4\">
<font face=\"verdana\" size=\"2\"><b>Alt</b></font></td>";
$out .= "<td bgcolor=\"#f4f4f4\">
<font face=\"verdana\" size=\"2\"><b>Views</b></font></td>";
$out .= "<td bgcolor=\"#f4f4f4\">
<font face=\"verdana\" size=\"2\"><b>Clicks</b></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
<?include("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);
?>
estats.php
<?include("Class.php");
// Exibindo estatísticas dos banners
echo $Sist->Estats( );
?>
registros.txt
>
http://www.wmonline.com.br|+|http://www.tbm1.blogger.com.br/banner2_tbm.gif|+|Visitem agora!|+|2|+|0http://www.google.com|+|http://www.justblo...3;!|+|0|+|0
>
porque quando eu executo o banner.php ou o class.php a pagina fica em branco?
Eu adorei o codigo. Demais!!!Só que na pagina banner.phpDa esses erros: Notice: Undefined index: url in e:\www\banner\banner.php on line 6Notice: Undefined variable: novoConteudo in e:\www\banner\Class.php on line 62Notice: Undefined variable: out in e:\www\banner\Class.php on line 43E depois aparece o banner em baixoAlguem pode me ajudar????
Meu Deus!!
Não acredito que consegui fazer funcionar!!
Meu primeiro PHP... ai que lindo! :D http://forum.imasters.com.br/public/style_emoticons/default/wub.gif