Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Eclesiastes

Sistema de banner c/ Estats

Recommended Posts

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:

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

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

 

Como dou espaço de um banner pro outro de pelo menos mais um <br>??

 

$out .= "<br />";

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 ------->>>>

Compartilhar este post


Link para o post
Compartilhar em outros sites

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\" 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\" 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 jpg

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;?>
// Estatisticas *apenas dos banners jpg

Estats.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|+|0
obs. 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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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|+|0

http://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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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????

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.