Sistema Gerenciador De Banners Em PHP E MySQL

Quem tem um web site (seja pessoal ou empresarial) geralmente pensa em obter retorno financeiro através desta ferramenta.

Uma das maneiras mais práticas e eficientes de se obter um retorno e aumentar a popularidade do site é através dos Banners.

Se você já pensou em elaborar um sistema igual a este, hoje é o dia… vamos fazer juntos!

Como fazemos em todas as nossas matérias, você terá em anexo os ficheiros para estudar e testar as aplicações que estamos lhe explicando.

Estrutura De Pastas

Como alguns já sabem, gosto de focar meus sistemas e scripts em códigos limpos e práticos de serem gerenciados.

Por este motivo, vamos disponibilizar abaixo a estrutura de nosso conteúdo de estudo!

Site
admin
admin/config
imagens
banner.php

Criando As Tabelas Na Base de Dados:

Antes de partirmos para a programação, abra o arquivo script-sql.txt (disponível no arquivo em anexo) e cole seu conteúdo no Programa utilizado para gerenciamento da base de dados.

Em nossas matérias de MySQL utilizamos como padrão o MySQLFront. Caso você queira utilizar este programa, clique em SQL Editor e cole o conteúdo do script (conforme imagem abaixo).

Criar Tabela

Script De Conexão

Tendo as pastas já criadas e as tabelas na base de dados geradas, você já pode dar início à Programação!

Crie o arquivo config.php e coloque dentro da pasta config.

Neste arquivo, você deverá disponibilizar o texto abaixo:


----- CONFIG.PHP -----
<?
  
$database="localhost:3306"; // SERVIDOR E PORTA UTILIZADA  
$dbname="tutorial"; // BASE DE DADOS
$usuario="root"; // USUÁRIO DO MYSQL
$dbsenha=""; // SENHA DO MYSQL

$conexao=mysql_connect ($database, $usuario, $dbsenha);
if($conexao){
      if (mysql_select_db($dbname, $conexao)){ print "";
      }else{ print "Não foi possível selecionar o Banco de Dados"; }
}else{ print "Erro ao conectar o MySQL"; }
?>

Menu Gerencial – Formulário (index.php):

A página index.php apesar de ter uma aparência simples, é de fundamental importância para este sistema.

Através dela temos acesso ao menu gerencial!

OBS.: Para facilitar seus acessos, criamos o usuário abaixo:

Login: teste@teste.com – Senha: 123456

Login

Menu Gerencial – Autenticação (autenticacao.rotinas.php):

Esta será a página onde faremos todo o gerenciamento de usuários, isto é: Diremos ao Sistema quem deve ou não ter acesso à Área Gerencial.

Bem… estamos disponibilizando um script simples de acesso, porém, caso seja de seu interesse, você poderá melhorar este código.


-----  Linha 02 e 03 -----
  session_start();
include ("../config/conexao.php");
----------

Talvez esta seja a parte mais importante do código, pois se você não tiver este conteúdo em seu código, ele simplesmente não vai registrar a sessão, nem permitir a conexão à base de dados.


-----  Linha 06 à Linha 08 -----
$cliente_username = $_POST["usuario"];
$cliente_password = $_POST["senha"];
$enviado          = $_POST["enviado"];
----------

Através das linhas acima você receberá as variáveis com o nome do usuário, senha de acesso e o status (neste caso, utilizaremos a condição enviado para reforçar na segurança).


------  Linha 10 à Linha 29 -----

if ($enviado == "posted"){    
  
if (!isset($cliente_username) or !isset($cliente_password)) { echo "Erro!"; exit; }  
if (empty($cliente_username) or empty($cliente_password)) { echo "Dados inválidos!"; exit; }

$query = "select * from tbl_usuarios where email = '$cliente_username' and senha = '$cliente_password'";
$result = mysql_query($query);
$number = mysql_num_rows($result);

if ($number==0) { ?>
<script>alert('Autorização inexistente/Senha inválida ou expirada.');history.back();</script>
<?
  exit;
} else {
  $_SESSION['usuario_id'] = mysql_result($result,0,'id');
  $_SESSION['usuario_nome'] = mysql_result($result,0,'nome');
  ?><script>document.location = '../principal.php'</script><?
}
mysql_close($conexao);  

}

----------

Nas linhas acima o script fará uma validação completa, verificando se o usuário e a senha informado existem.

Antes disso, ele só fará a leitura se a variável $enviado (exemplo da linha 6 à linha 8) tiver o valor posted.

Caso este valor (que será passado através do método POST) não seja o informado, ele sequer fará a leitura no demais.

Nas linhas a seguir (após ele validar a variável $enviado) o script fará uma série de verificações, finalizando ao registrar as sessões para o ID e NOME do Usuário selecionado. Além disso ele fará seu direcionamento à página principal.php.

Menu Gerencial – Página Principal (principal.php):

Esta será a página principal do sistema, onde teremos acesso às demais a serem gerenciadas (conforme você pode ver na imagem abaixo).

Menu Banners

OBS.: Apesar de também estar disponível no Sistema (no ficheiro em anexo), para não tomar muito seu tempo, falaremos nesta matéria apenas dos itens Cadastrar Banner e Listar Banners.

Certamente os comentários diversos disponíveis nesta matéria sanarão qualquer dúvida que você tenha quanto aos demais ficheiros.


-----  Linha 02 à Linha 11 -----
session_start();
if (empty($_SESSION['usuario_id'])){
echo "Acesso negado!";
exit;
}else{
include('config/conexao.php');

$usuario_id   = $_SESSION['usuario_id'];
$usuario_nome = $_SESSION['usuario_nome'];
}

----------

Neste trecho do script faremos uma validação!

Se o ID e NOME do usuário tiver em uso nsta sessão, ele deverá lhe dar acesso, caso não esteja em uso ele deverá restringir o acesso.

Fará acesso também ao script conexao.php (responsável pela conexão ao banco de dados).

Após isto, o sistema fará algumas verificações simples neste script, só atentando para o botão excluir (onde ele deverá direcionar seu acesso ao script logout.php (responsável pela exclusão da sessão).

Menu Gerencial – Cadastrar Banner (banners_cadastrar.php):

Esta é a página responsável pelo cadastro dos dados do banner (conforme você pode ver na imagem disponível abaixo).

Seu código corresponde ao de um formulário simples. Posteriormente, você pode inserir uma validação em JavaScript.

Formulário

Menu Gerencial – Script Banner (script_banners.php):

Trata-se de um script exclusivo que deverá receber as variáveis e tratá-las, antes de enviar cada registro ao banco de dados.

OBS.: Para saber mais sobre este script, sugerimos verificá-lo na íntegra, dentro da pasta ADMIN.


------  Linha 25 à Linha 29 ------

$acao = $_GET['acao'];

switch ($acao) {

case cadastrar:

----------

Assim como os demais scripts, o script_banners.php também tem o conteúdo padrão para manter sua segurança; porém, até para facilitar seu gerenciamento, recebe por método GET o motivo da entrada (exemplo: alterar, cadastrar ou excluir) e por método POST receberá os valores a serem manipulados.

OBS.: Após a inserção, edição ou exclusão, seja qual for o comando utilizado, o script fará o redirecionamento para uma outra página.

Menu Gerencial – Listar Banners (banners_listar.php):

Através desta página você poderá de forma prática e simples listar todos os banners cadastrados no sistema, podendo editá-los, visualizá-los ou efetuar sua exclusão a qualquer momento.

Lista Banners

Apresentação Dos Banners (banners.php):

Como você já tem o código todo pronto em anexo, vou apenas detalhar abaixo para que você possa entender nossa lógica de programação e aplicar às suas necessidades!

Para facilitar, peço sua gentileza de abrir este script em um programa como o PHP Editor (que é leve e tem as linhas numeradas).


-----  Linha 01 -----
<?php include "config/conexao.php"; ?>
----------

Talvez esta seja a parte mais importante do código, pois se você não tiver este conteúdo em seu código, ele simplesmente não vai conectar à base de dados.


-----  Linha 21 -----
$query_banners = "select * from tbl_banners where status = '1' and banner != '' Order by rand() limit 5
----------

Esta parte do código terá por finalidade selecionar os banners na tabela (de forma randômica), limitando-os a 5 itens.

Nas linhas abaixo estaremos trazendo o conteúdo da base de dados de forma prática, objetiva e simples.

Banner No Site

OBS.: Nos exemplos acima, eles não estão padronizados por tamanho, porém, se você quiser inserir tamanhos exclusivos, poderá criar uma função específica e melhorar o script!

Esse é apenas um exemplo… você poderá fazer muito mais…

Ficamos por aqui em mais uma matéria! Esperamos tê-lo ajudado em algo…

Envie-nos suas dúvidas e dê sugestões para as próximas matérias! Nosso compromisso é lhe ajudar!

DOWNLOAD: Descarregue o código utilizado neste tutorial: Sistema Gestão De Banners Em PHP e MySQL, em formato .zip.

Be Sociable, Share!

48 Comentários

  1. Muito bom esse exemplo de gerenciamento de banner, simples e funcional

  2. joao paulo

    não estou conseguindo cadastrar, na hora que confirmo aparece uma pagina em branco oque tenho que fazer ?.

    • Olá João Paulo! Está a utilizar Windows com que versões do PHP e MySQL? O script foi testado em linux, com o PHP e MySQL 5 e funciona 100%. Um Abraço Rui Soares

    • carlos

      Olá meu nome é carlos …também instalei o script e não consegui…vc já conseguiu instalar…no meu está dando os seguintes erros no log
      [09-May-2010 10:35:41] PHP Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/twitterm/public_html/anuncios/admin/banners_listar.php on line 184
      [09-May-2010 10:35:47] PHP Warning: Module 'json' already loaded in Unknown on line 0
      [09-May-2010 10:35:50] PHP Warning: Module 'json' already loaded in Unknown on line 0
      [09-May-2010 10:36:08] PHP Warning: Module 'json' already loaded in Unknown on line 0
      [09-May-2010 10:36:12] PHP Warning: Module 'json' already loaded in Unknown on line 0
      [09-May-2010 10:36:16] PHP Warning: Module 'json' already loaded in Unknown on line 0
      [09-May-2010 10:36:17] PHP Warning: Module 'json' already loaded in Unknown on line 0
      [09-May-2010 10:36:17] PHP Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/twitterm/public_html/anuncios/admin/banners_listar.php on line 184
      [09-May-2010 10:39:19] PHP Warning: Module 'json' already loaded in Unknown on line 0

  3. carlos

    Sou o Carlos que postou aí em cima…eu também não consegui cadastrar….estou com o mesmo problema que vc. Aguardo sua resposta para saber se vc conseguiu e como eu posso resolver? Obrigado pela atenção

  4. Olá, Usei o script, parece ter dado certo, upa a imagem, mas não mostra na tela, o que pode ser?

    Obrigada

  5. Também instalei mas após colocar os dados do banner ele abre uma tela em branco e não insere os dados no banco de dados.

    Grande abraço.

  6. Felipe

    muito bom o script. vou testar. vlwww. sempre ajudando

  7. Joao

    Olá, boa tarde. Gostei demais do script, mas como faço para funcionar com flash (swf) ?
    Alguém poderia me ajudar? Desde já agradeço.

  8. Betinho Silva

    Tambem estou com essa duvida. como fazer ele funcionar com flash

  9. Boa Tarde! Eu utilizo sistema de Notícias criados por vocês, mas este Gerenciador de Banner não cadastra os banner, ele avisa que o cadastro foi efetuado com sucesso mas não grava nada, sendo que ele está no mesmo servidor de o sistema de notícias e o sistema de notícia funciona corretamente…

  10. Ricardo

    muito bom, bem simples e funcional.

    o campo visualizações é referente a quantidade de exibicoes que o banner vai ter??

  11. Gostaria de saber como aplico random no banner e para aparecer num unico local.

    Obrigado :D

  12. ou mano para com isso, nenhum dos seus script funcional. newcastler, ger.de banner, nada

  13. welton

    parece que falta cliente na lista

  14. Wélton

    na verdade é a tabela que esta errada, troca por esta –>

    CREATE TABLE `tbl_banners` (
    `id_banner` int(11) NOT NULL auto_increment,
    `cliente` varchar(80) NOT NULL default '',
    `url` varchar(80) NOT NULL default '',
    `largura` varchar(50) NOT NULL default '',
    `altura` varchar(50) NOT NULL default '',
    `texto_banner` varchar(80) NOT NULL default '',
    `tipo_abertura` varchar(30) NOT NULL default '',
    `visualizacoes` varchar(20) NOT NULL default '',
    `banner` varchar(80) default NULL,
    `status` char(1) NOT NULL default '',
    KEY `id_banner` (`id_banner`)
    );

    Aqui funcionou depois que eu fiz estas alteraões…
    flw

    • Fabiano

      Wélton como vc fez a parte de visualizações para controlar a visualização de acordo com o valor cadastrado no banco?????
       meu msn:  biolofgos@hotmail.com

  15. João

    Olá Rui e Quemuel.

    Estou utilizando php 5, servidor Linux e MySql 5.

    Porém ao rodar o script ele dá a mensagem de que foi cadastrado, mas, não envias as informações pra o BD.

    O que pode estar ocorrendo?

    No aguardo…

  16. Ecttor

    Quais as extensoes que ele aceita ?

  17. funcionou perfeitamente sevidor  Windows com PHP mas a tabela tem que ser de acordo com o post do Wélton e tb tem que permitir a escrita e leitura da pasta Banners caso contrario da mensagem de erro pois o servidor recusa o arquivo enviado.

  18. Seguinte se alguém poder ajudar, após colocar todos os dados, fazer a alteração do DB como diz o Wélton e permitir escrita na pasta banners, o erro da página branca apareceu para mim também, ele vai até um certo ponto e depois para na acao=cadastrar e fica uma página em branco !

    Alguém conseguiu verificar esse erro !

  19. Henrique

    o Erro aparece nas linhas:
    ( ! ) Notice: Use of undefined constant cadastrar – assumed 'cadastrar' in C:wampwwwGestaoBannersadminscript_banners.php on line 21
    21 case cadastrar:

    ( ! ) Notice: Undefined variable: acao in C:wampwwwGestaoBannersadminscript_banners.php on line 21
    21 case cadastrar:

    ( ! ) Notice: Use of undefined constant alterar – assumed 'alterar' in C:wampwwwGestaoBannersadminscript_banners.php on line 83
    83 case alterar:

    ( ! ) Notice: Undefined variable: acao in C:wampwwwGestaoBannersadminscript_banners.php on line 83
    83 case alterar:

    ( ! ) Notice: Use of undefined constant excluir – assumed 'excluir' in C:wampwwwGestaoBannersadminscript_banners.php on line 172
    172 case excluir:

    ( ! ) Notice: Undefined variable: acao in C:wampwwwGestaoBannersadminscript_banners.php on line 172
    172 case excluir:

    São esses os erros.

  20. Henrique

    quando confirma o banner, dá o seguinte erro: '( ! ) Parse error: syntax error, unexpected '=' in C:wampwwwGestaoBannersadminbanners_listar.php on line 190"

    Alguém conseguiu resolver?

    • rauan ferreira

      Olá henrique, provavelmente você usa a versão mais nova do php, abra o arquivo "banners_listar.php, vá na linha 190, depois da sintese "<?" adicione php, ficará assim. <?php.

  21. Henrique

    Galera, o principal erro é o seguinte: 'Notice: Undefined variable: HTTP_POST_FILES" devido a esse erro, ele não move a imagem para a pasta certa, muito menos grava no banco de dados (somente a imagens, os outros dados são gravados).

    Estou usando o WAMP, já tentei alterar no php.ini " ERROR_REPORTING = ~E_ALL" mas não funcionou. Alguém sabe?

  22. Dinei

    Olá olha muito bom o sistema, eu instalei ele normalmente mas no momento de cadastrar o banner o sistema para do arquivo ( script_banner.php ) e a tela fica toda branca. vc pode mim dar umas dicas do que pode ser?

  23. cdn

    ( ! ) Notice: Undefined =/

  24. Sidnei Freire

    Cara valeu a intenção, o script esta legal mas a mancada foi mandar o script do DB errado… segue o script acima que dá certo…faltou tambem o acao = $_GET('acao') no inicio do script_banners.php. até agora é isso que encontrei de errado.
    Agora me diz uma coisa… pra que vc colocou junto o 'htmlarea'?

  25. Paulo Enrique

    Para ajudar a todos, depois de olhar o sistema verifiquei que na verdade existem 2 erros um é a tabela e o outro é o script_banners.php que faz a gravação , esta faltando um arquivo.
    segue a tabela correta.(substitui por esta)

    CREATE TABLE `tbl_banners` (
    `id_banner` int(11) NOT NULL auto_increment,
    `cliente` varchar(80) NOT NULL default '',
    `url` varchar(80) NOT NULL default '',
    `largura` varchar(50) NOT NULL default '',
    `altura` varchar(50) NOT NULL default '',
    `texto_banner` varchar(80) NOT NULL default '',
    `tipo_abertura` varchar(30) NOT NULL default '',
    `visualizacoes` varchar(20) NOT NULL default '',
    `banner` varchar(80) default NULL,
    `status` char(1) NOT NULL default '',
    KEY `id_banner` (`id_banner`)
    );

  26. Paulo Enrique

    coloque esta tag dentro do arquivo script_banner.php entre as linhas 19 e20 ?>

    <?

    $acao = $_GET['acao'];
    e substitui o comando que esta entre a linha 50 a 55

    $banner_descricao = $_POST['banner_descricao']; substitui por por $banner_descricao = $_POST['banner_nome_arquivo_descricao'];

  27. tony

    Apesar do script te sido testado em servidor eu a conhelho a fazer um subdomino e tenta testar sempre no servidor na hospedagem de site,, as vezes o servidor  nao simula 100% realidade do funciomanto ate mesmo
    vc nao usar o script no loclamente no pc e sim na internte,,,,

  28. tony

    mas so para deixa claro e concluir meu comentario acima  adorei este site nota 10 sou fa agora ,,,, 

  29. tony

    valew paulo enrique e pela dica funcionou bem e falew site webmaster

  30. aaa

    Funciona com arquivos swf?

  31. edilson

    Opa pra mim funcionou porém eu não uplodou a imagem verifiquei as permissões da pasta e está ok…
    alguém pode me ajudar ?
    obrigado
    Edilson

  32. Na configuração do banner, eu coloco por exemplo 1.000 visualizações, então significa que cada vez que o banner for exibido automaticamente o sistema irá debitar os créditos de visualização??? Ou eu preciso reconfigurar diariamente etc?

    Minha intenção -> O anunciante compra créditos para exibir o banner, e automaticamente o sistema de gerenciamento vai administrando o consumo desses créditos. Bastando apenas um controle humano para inserir novos créditos (para evitar fraudes ou erros). 

    Dá pra faze-lo funcionar desse modo???

  33. Luiz Antonio

    Olá Realmente este Script está aprovado mas o lance acredito eu dos créditos falta um comando sql update no caso de decrementar as visualizaçoes , na pagina banners.php – alguem pode me confirmar isto

  34. Não estava conseguindo excluir os banners.

    Daí inseri: $id_banner = $_GET['id_banner']; logo após o case "excluir" na linha 180.

  35. Eduardo Correia

    Que pena. o script não funcionou aqui

  36. Ana

    olá, as imagens não estão ficando gravada, como faço.

Participa! Comenta...