Painel de administração com PHP + OOP - Introdução

Aviso importante!

Eu sei que você não quer ver propagandas, porém o conteúdo gratuito só está aqui graças a publicidade. Considere desativar o AdBlock para esse site.

Sejam todos bem vindos à mais um curso RBTech sobre PHP orientado a objetos. Neste curso iremos criar um modelo de painel de administração para sites utilizando como base o CRUD que aprendemos criar em outra série de aulas anteriormente publicadas aqui no blog.

Podemos dizer que este será o curso onde iremos colocar em prática dentro de uma situação real as rotinas criadas no CRUD, interagindo com os usuários via formulários para exibir ou manipular os dados necessários.

Alguns assuntos abordados neste curso

  • Desenvolvimento orientado a objetos;
  • Autenticação de usuários;
  • Modularização de sistemas;
  • Controle por nível de acesso (simples);
  • Prevenção de SQL Inject;
  • Proteção contra acesso direto a arquivos do sistema;

O que será desenvolvido

Para entender um pouco mais o projeto do curso, assista ao vídeo de introdução logo a seguir:

Requisitos mínimos para o curso

Agora que você já sabe o que iremos desenvolver, é hora de ver os requisitos necessários para iniciar o curso:

Note que os conhecimentos tido como requisitos para a execução do projeto não serão explicados neste curso pois entendemos que todos devem estudar estes tópicos antes de iniciar o curso.

Perguntas frequentes

P - O curso é para iniciantes?
R - Não. O curso é considerado de nível intermediário e exigirá do aluno conhecimentos em PHP orientado a objetos e lógica de programação bem apurada.

P - O curso será gratuito?
R - Sim, todas as aulas serão disponibilizadas de forma gratuita para todos via streaming.

P - Quando o curso terá início?
R - A primeira aula será postada na primeira semana de junho de 2012.

P - Por que terá início somente em junho e a introdução já foi publicada?
R - Para que todos possam estudar com calma e atenção os assuntos tidos como requisitos (principalmente o sistema de CRUD) e posteriormente poderem acompanhar o curso conforme o mesmo vai sendo publicado com total entendimento do mesmo.

P - Qual será a frequência de publicação das aulas?
R - Vai depender de vocês. O curso irá seguir um sistema de recompensa, onde a próxima aula somente será postada quando um número estipulado de compartilhamentos (Twitter + Facebook + PlusOne + LinkedIN) do post atual for atingido. Por exemplo, se for estipulado o número de 50 shares, ao se atingir 20 tweets e 30 likes o próximo post seria postado, ou seja, somam-se todas as redes sociais.

P - Como será feito o controle destes shares?
R - Tudo será contabilizado pelo plugin de redes sociais e será verificado uma vez por dia de segunda a sexta feira por mim a fim de apurar se a aula seguinte já deve ser publicada ou não. Como o blog utiliza sistema de cache de conteúdo, ao compartilhar o post você não verá imediatamente o seu share, sendo que o mesmo pode ser contabilizado em até 24 horas (quando houver a próxima atualização de cache).

P - Sou assinante premium, terei as aulas para download em HD?
S - Sim, todas as aulas serão disponibilizadas para download, porém não individualmente. Ao final do curso ou conforme necessidade será criado um post exclusivo para que os assinantes baixem as aulas do curso.

P - Sou assinante premium, poderei baixar o código fonte do sistema?
S - Sim, todo código fonte será disponibilizado para os assinantes, porém juntamente com as aulas para download em um post separado e não individualmente em cada postagem do curso.

Mais posts desta série

Este post faz parte de uma série, confira tudo que já foi publicado sobre o mesmo assunto.

Se você tiver alguma dúvida extra sobre como será o funcionamento deste curso, deixe um comentário neste post. Futuramente somente serão respondidas dúvidas relacionadas ao conteúdo das aulas.

Sobre o autor

Ricardo Bernardi

Sou técnico em hardware e desenvolvedor web, e sobre estes dois assuntos comecei a compartilhar aulas e artigos, tornando-me blogueiro em 2008. Em 2010 esse hobby virou profissão, e desde então tenho buscado melhorar e profissionalizar cada vez mais os projetos que mantenho na web.

Comentários

Atualmente temos 84 comentários para este post. Participe você também, clique aqui e comente sobre o assunto.

  • poetarj comentou em

    Olá, Ricardo.
    Estou com um problema logo na inicialização do paineladm. Aparece um Warning de que não existe a variável pathlocal. Segue a mensagem:

    ( ! ) Notice: Undefined variable: pathlocal in c:\(meu caminho)\paineladm\classes\autoload.php on line 12
    Call Stack
    # Time Memory Function Location
    1 0.1163 243448 {main}( ) ..\index.php:0
    2 0.3642 301368 loadmodulo( ) ..\index.php:19
    3 0.3912 393168 include_once( 'c:\(meu caminho)\paineladm\modulos\usuarios.php' ) ..\funcoes.php:47
    4 0.3924 393560 __autoload( ) ..\funcoes.php:8

    Pode me ajudar, por gentileza?

    Responder
      • Antonio Garcia comentou em

        Este CRUD foi muito importante pra que pudesse começar a entender orientação a OBJETO, não que já estou Craque no assunto, mais realmente entendo muito dos scripts PHP e até já estou me aventurando em FRAMEWORKS, que sempre tive horror em aprender. O desconhecido nos assusta. trabalho com informática desde 1983, já programei em várias linguagens, melhorando, já fiz muitos programas em várias linguagens, mais nunca me dediquei a aprender a programar realmente. Mais a alguns anos venho colocando a minha experiência em montagem de sistemas com simplicidade e objetividade, e construindo alguns sisteminhas WEBs bem interessantes. Já agradeci algumas vezes a você por este início. Quem vem de linguagens procedurais é muito difícil entender Objetos (Cobol, C, Basic, DBaseIII, JCL, e outras), e sua aula de CRUD e o Painel admin, realmente me colocou na cena. MUITO OBRIGADO, ainda não tive condições de fazer o seu curso de Codeigniter Avançado, mais estou guardando para fazê-lo! Parabéns pela sua dedicação.

        Responder
  • joao345345 comentou em

    Boas Ricardo!

    Desde ja grande curso e grande instrutor!!! :)

    Olha estou com uma duvida eu não consegui completar o autoload.php porque nas video aulas voce não chega a mostrar ele ate ao fim e ele ja vem preenchido...Sera que dava ou para me enviar o ficheiro autoload ou ate mesmo me mostrar o que esta nele?

    Obrigado pela atenção :)

    Responder
    • Todos os arquivos que já estão pronto são de cursos que são requisitos para fazer esse painel, antes de começar o painel você deve fazer os demais cursos listados nos requisitos desse post.

      Responder
      • joao345345 comentou em

        Obrigado pelo esclarecimento! Já assisti e agora ja tenho tudo o que é preciso.

        Agora tenho uma problema eu assiti a todas as video aulas e fiz tudo da mesma maneira e não estou a compreender porque esta dando esse erro "Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /.../aulas/php/paineladm/index.php:10) in /.../aulas/php/paineladm/sessao.class.php on line 15"

        a linha 15 do meu sessão.class.php tem o "session_start();" sera que da para dar uma dica por favor.

        Obrigado pela atenção

        Responder
          • joao345345 comentou em

            Ola Ricardo!
            Obrigado por estar se disponibilizando para tentar me ajudar com o erro.
            A aula extra não tinha nada relacionado com o erro que me estava a aparecendo, mas consegui resolver num comentário no youtube que esta nas suas aulas de uma pessoa que estava como o mesmo erro.
            Contudo agora esta aparecendo outro erro num local do código que já vi e esta igual ao que você disponibilizou com os videos.
            O erro é o seguinte" Fatal error: Call to undefined method usuarios::setValor() in .../aulas/php/paineladm/modulos/usuarios.php on line 13 " e o que esta na linha 13 é o seginte " $user->setValor('login',antiInject($_POST['usuario'])); "

            Se me pudesse dar uma ajuda agradecia :) Obrigado pelo seu tempo e ajuda!!

          • joao comentou em

            Ola Ricardo!

            Sei que não ade estar com paciensia para me ajudar, mas estou mesmo necessitando ajuda no painel de admin.

            Já fui ver o que me tinha mostrado e ate fiz as video aulas novamente e não estou a ver onde possa estar o erro :/
            Se me pudesse ajudar agradecia imenso. Eu tenho tudo igual ao que voce fez na video aula e por isso não sei mesmo o que pudera ser

            O erro é o seguinte" Fatal error: Call to undefined method usuarios::setValor() in .../aulas/php/paineladm/modulos/usuarios.php on line 13 " e o que esta na linha 13 é o seginte " $user->setValor('login',antiInject($_POST['usuario'])); "

            Agradecia a sua ajuda! Obrigado

  • Ravnos comentou em

    Olá onde eu pego os 3 arquivos classes que você usou na 1 aula você não explico... foi de algum outro tuto? ou baixo de algum lugar? me manda o link de onde consigo ou me diga onde...

    Responder
  • manfrindj comentou em

    Boa Tarde Ricardo.

    Desdes das aulas do CRUD Genérico até a sexta aula deste curso não tive nenhum problema. quando aparecia algum erra erro de digitação. Mas na aula 07 deste curso, quando inicia-se os scrips do menu sanfona ou accondion com jquery no arquivo geral.js, simplesmente não acontece nada. Não dá o efeito accondion no menu. Já revisei todo o código conforme a aula 07. o que será que pode ser? os aquivos js estão sendo chamados de forma certa. Fiz o download da versão "production jQuery 1.11.1" e fiz exatamente como diz no video. Não contem nenhum erro de digitação. o que pode ser? Poderia me ajudar como posso estar procurando como resolver este problema. Se precisar de mais informações faço outro comentário.

    Responder
    • Pode haver conflito/erro no JS (o que você digitou ou um arquivo baixado da web) ou então a estrutura do HTML não está correta (faltando uma tag ou classe ou ID).

      Responder
      • Djalma comentou em

        Grupo RBTech. Acabei achando o erro e era mesmo erro de digitação. Agradeço mesmo assim por ter me ajudado. Gostaria de elogiar as suas videos aulas são muito intuitivas e fácil didática. Procurei no seu site e não encontrei nenhum exemplo de upload de arquivos. Você teria algum exemplo em video aula sobre esse assunto ou algum link que considere interessante. Agradeço a ajuda desde aqui. Obrigado.

        Responder
  • Rubens comentou em

    Como resolver o problema do autoload mesmo depois de eliminar a barra e continuar dando erro?

    Responder
  • alanfreire comentou em

    o erro que aparece

    Ocorreu um erro com os seguitnes detalhes:
    Arquivo: /home/agencia/public_html/sgv/painel-adm/classes/banco.class.php
    Rotina: executaSQL
    Codigo: 1064
    Mensagem: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
    Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/agencia/public_html/sgv/painel-adm/classes/banco.class.php on line 133
    Nome Email Login Ativo/Adm Cadastro Ações

    Responder
    • Você tem um erro em um SQL, talvez um apóstrofe faltando ou sobrando, espaços extras ou faltantes, confira isso, pois o código que tenho aqui é o mesmo disponibilizado para baixar e não acontece tal erro.

      Responder
  • alanfreire comentou em

    Ola Ricardo já fiz todo o curso mais o sistema não loga assinei o premium mais nem os seus arquivos estão logando você poderia me ajuda de alguma forma? o banco de dados esta igual ao seu

    Responder
  • Rafael Fernando comentou em

    Bom dia , estou assistindo as suas vídeo aulas pelo canal do youtube
    eu também estudei o crud orientado a objetos, mas agora estou estudando o painel administrativo oo,e na terceira aula estou me deparando com este erro, acredito que seja besta mas já rodei e não resolvi .

    no diretório modulo/usuarios.php na linha 13 esta ocorrendo este erro "Notice: Undefined index: usuario in C:\xampp\htdocs\adm\modulos\usuarios.php on line 13";

    lina 13 <input type="text" size="35" name="usuario" value="" />

    Responder
  • kewzin comentou em

    Ok. Assisti todas as vídeo-aulas, gostei. Inclusive, és um bom instrutor. Porém, uma ajuda a mais de quem já entende mais do que eu, não diminuiria nada do seu conhecimento, agora, eu assisti todas vídeo-aulas e não consegui solucionar meus problemas, pois o meu problema não está articulado no vídeo, aprendi muito contigo. Mas, uma ajuda em relação a meu outro comentário seria prescindível demais, estou caminhando pro ramo, e com a solução do problema, eu poderia aprender mais, e inclusive acelerar a criação de meu site, por favor me entenda!

    Responder
    • Eu estou te ajudando, já fiz 12 aulas totalmente grátis sobre o assunto para dar um norte a cada desenvolvedor. Mas volto a ressaltar, implementações extras ficam a critério de cada um conforme a necessidade.
      Outra coisa, seu comentário anterior não foi aprovado pois não está em conformidade com nossa política de comentários.

      Responder
  • kewzin comentou em

    Pois é, mas não tem jeito mais com que eu faça essa classe, não tem mesmo. Já tô desistindo do sistema por causa disso, pois já procurei tanto na net, como tentei me basear pelo CRUD, vendo e revendo todas as aulas do crud, e painel adm...

    Responder
    • kewzin comentou em

      Ricardo, por favor tem como vc me disponibilizar essa classe upload? Por favor, é só pela questão de entender o código e dá seguimento ao meu sistema, pois o que só me empata é só essa classe upload mesmo, por favor, já tentei me basear por várias classes do sistema e sem sucesso! Por favor ;)

      Responder
  • kewzin comentou em

    Poxa tenho outra dúvida Ricardo, referente ao upload de imagens, não consigo implantar em meu sistema, já "futuquei" tudo aqui e nada :/ Poxa, só presta se eu criar uma página upload.php e dá um action no form pra essa página. Não quero fazer assim, é uma mão-de-obra pra criar essa página toda hora, será que tá certo assim? Ou você tem outra maneira baseada no CRUD? Pois no mesmo não funcionou de jeito nenhum, tá brabo e só esse problema de upload já me rendeu uns 5 dias me empatando a dá seguimento na criação de meu site com painel! Me ajude, Help!

    Responder
    • Como eu já comentei em outros vídeos, fica a critério de cada um implementar novas funcionalidades ao painel, mas posso assegurar que já fiz uma classe de upload e funcionou perfeitamente integrada ao sistema.

      Responder
  • kewzin comentou em

    Quero aqui só deixar a solução que consegui só, pois o problema estava nas funções ou seja, eu tinha que criar uma função no arquivo funcoes.php e dá um load no arquivo. E consegui carregando na minha função o script do TINYMCE. Valeu a todos!

    Responder
  • kewzin comentou em

    Ricardo, estou com um problemão que deixei de mão por uns tempos por não conseguir resolver, e hoje preciso muito e não consigo de jeito nenhum, que é implantar o editor TINYMCE nos textareas desse Painel de Administração, tá sendo um quebra-cabeça muito forte, e não consigo nem imaginar o que seja esse impedimento. Confio em vc cara, pra me dizer uma solução. Rs' :(

    Responder
  • kewzin comentou em

    Ricardo, com o CRUD Genérico, sempre terei que criar classes de uma em uma, ou posso em um só arquivo gerar uma embaixo da outra, sem precisar criar arquivos .php em classes toda hora?

    Responder
    • Se você prestar atenção, verá que fizemos um autoload automático que carrega as classes pelo seu nome, portanto se quiser mudar isso terá que alterar a forma como as classes serão carregadas no sistema.

      Responder
  • André Ventura comentou em

    Olá Ricardo,

    estou terminando o curso de CRUD Genérico com PHP e OOP. Adaptei o curso para minhas tabelas (inclusive com várias PKs etc - aprendi muto nessa) e ficou ótimo. Vou agora fazer o curso de Painel de Administração com PHP e OOP. Minha pergunta é:

    - Depois que terminar o curso de Painel de Administração com PHP e OOP, fazendo seu curso de Foundation 3 eu conseguiria utilizar no Painel de Administração ?

    Obrigado.

    André Ventura

    Responder
  • Felipe comentou em

    Olá Ricardo.
    Kra so tenho a agradecer e parabenizá-lo pelas video aulas, são de ótima qualidade, tanto o conteúdo quanto a didática.
    PARABÉNS!

    Responder
  • kewzin comentou em

    Me diga uma sugestão por favor, Ricardo.
    Eu quero inserir páginas contidas em meu site, para serem atualizadas em meu PAINEL DE ADMINISTRAÇÃO, que curso eu tenho que aprender, pra poder saber isso? E isso parte de que lógica, CRUD, tals...

    Cordialmente, Kellison Ruan.

    Responder
      • kewzin comentou em

        Pois é, eu gostaria mais de saber, pela questão de ele ser em PHP, qual ligação eu faço, para que quando eu for alterar os dados contidos em meu site pelo PAINEL ADM, ele já atualizar lá no site, automaticamente, quando eu salvar um dado, tipo "notícias" na página principal de meu site!

        Muito obrigado,

        Responder
        • Você não vai encontrar na web um curso específico explicando como você deve fazer cada projeto em particular. O que você precisa é aprender a usar a linguagem e então criar seu sistema baseado na lógica ensinada nos cursos.

          Responder
  • bruno comentou em

    queria saber se tem como criar uma galeria de fotos com sistema de upload, mais que as images uplodadas sejam inseridas automaticamente na galeria e possam ser vistam pelos usuarios do site ate mesmo os que não estejam cadastrados no site, se pode mim ajudar agradeço muito.

    Responder
  • Mas com esse sistema é possível criar um sistema de upload de fotos onde as fotos inseridas, entram no portfolio do site? ou não Ricardo? Se for, farei o curso de PHP.

    Responder
    • No curso é criado um módulo básico de exemplo que é controle de usuários, porém usando os ensinamentos e um pouco de lógica é possível criar muitos outros módulos conforme sua necessidade.

      Responder
  • Oi Ricardo. Eu não sei nada de PHP e mysql.
    Com esse sistema é possível criar um sistema de upload de fotos onde as fotos inseridas, entram no portfolio do site?
    Obrigado!

    Responder
  • Abraão Marques comentou em

    Fera, eu cheguei até o seu site assistindo ao vídeo de CRUD genérico como PHPOO no portal da UPINSIDE. De cara, só pelo primeiro vídeo, percebi que você é sinistro na programação e um ótimo instrutor! Eu assisti, agora, esse vídeo aula de introdução, eu já estou fascinado pelo que virá nos próximos vídeos!

    Você é muito bom programador e professor!!!

    Com certeza, farei o possível para divulgar o seu portal e vídeos e ser um usuário premium, também!

    Abração a todos!!!

    Responder
  • Boa Noite Ricardo, acompanho seu blog a seculos e parabenizo sempre pela iniciativa.
    Gostaria de saber se no final deste curso você ira disponibilizar os arquivos para download.
    porque agora só dar para ir assistindo mesmo, não dar para fazer porque ainda falta alguns arquivos que você utiliza!

    Abração

    Responder
    • Somente são disponibilizados arquivos para assinantes premium.
      Todo sistema funciona perfeitamente conforme vai sendo desenvolvido pois eu também comecei do zero nas gravações.

      Responder
  • walison comentou em

    Ola Ricardo parabens pela iniciativa em fazer esse incrivel curso hehe estava vendo a video aula de introdução,e observei na url "index.php?error=3"sera que isso não permitirar a injeção de codigos SQL?

    Responder
    • Talvez sim, mas o tratamento deste erro não tem rotina alguma que passe perto do BD, logo creio que não irá ser uma vulnerabilidade crítica inicialmente. Mas a questão segurança será discutida mais adiante em outro curso...

      Responder
  • Natanael comentou em

    Valeu Ricardo, este eh o tipo de vídeo-aulas que procuro pela internet, estava muito precisando aprender a fazer um painel administrativo, tempo atras lhe deixei um comentário aqui no blog sobre como fazer esses painéis, e que bom que você esta ensinando sobre isto. Pode ter certeza que vou dar os ok's nas redes sociais e comentar as videos-aulas.
    Valeu!!!

    Responder
  • Quero parabeniza-lo pelas videos aulas, voce é demais, nota 10. Estou aprendendo muito aqui do que em cursos que fiz. Sou iniciante, mais uma vez parabéns. Recomendo a todos a RBTech.info

    Responder
  • Leandro comentou em

    Bom dia! Prof. Ricardo, a dias atrás enviei uma dúvida:

    Olá, Ricardo, primeiramente parabéns, suas aulas são show!
    Assisti o CRUD com OOP, porém você utilizou a conexão com o mysql, gostaria de saber se como faria a mesma coisa utilizando somente PDO. É possível?

    Aí, respondeu minha dúvida!

    Mas como sou iniciante, tenho várias dúvidas e deixa eu te fazer mais uma pergunta!

    Quando comecei a estudar uma amigo que já trabalhava com php me disse use o PDO que ele é melhor, porém todos que postam algum artigo ou video aulas na net usam o mysql e não PDO. Desculpe minha ignorância, mas será que preciso adptar o seu CRUD para PDO, ou posso usar tranquilamente o CRUD com o mysql usual? Qual sua opnião em relação as diferenças entres eles? Grato por sua atenção.
    Um abraço.

    Responder
    • Temos 3 possibilidades mais comuns: MySQL padrão, MySQLi (improved MySQL) e PDO.
      Cabe a você estudar sobre cada uma delas e definir vantagens e desvantagens para depois decidir qual você irá usar. Uma coisa é fato, de nada adianta você escolher a melhor biblioteca de conexão/tratamento de dados se você não utilizar boas práticas de programação.

      O PDO é mais seguro segundo especialistas (note que não existe sistema 100% seguro) quando comparado aos demais, eu particularmente gosto mais do MySQLi. O MySQL é mais simples, portanto o mais usado no início de carreira e em treinamentos. Note que um sistema feito obedecendo boas práticas e utilizando OOP bem estruturado pode ser tão seguro quanto um sistema que utiliza PDO (ou até mais).

      Um sistema depende muito menos da tecnologia utilizada (apesar de muitos discordarem) do que do programador e sua forma de pensar. Resumindo: você é peça fundamental, indiferente da tecnologia que irá utilizar.

      P.S.: antes de começarem a me dizer um monte de coisa, essa é minha opinião, ok?!

      Responder
  • Jorlan Castro comentou em

    Gostei muito da Aula pelo jeito o curso sera mais um daqueles que fica bastante interessante

    Responder
  • Vitório comentou em

    Cara, você é 10...

    Tenho acompanhado seu site e aprendido muito... aguardo anciosamente o novo curso.

    Abraço

    Responder
  • Boa noite, Ricardo.
    Sou novo no blog e estou muito encantado com os conteúdos postados.

    Estou muito ansioso para o lançamento deste curso e por isso gostaria de perguntar se não existe a possibilidade de efetuar o lançamento do curso também por compartilhamento nas redes igual será o lançamento das proximas aulas, pois eu que já estudei tudo o que precisa para o curso ficarei todo este tempo esperando por ele.

    Peço que por favor pense com carinho na proposta.

    Desde já muito obrigado por tudo o que tem feito.

    Responder
    • O curso seguirá o cronograma estipulado, a primeira aula será postada somente em junho conforme explicado no post. Parabéns aos que já estudaram tudo e estão aptos a iniciar o curso, mas isso não altera a programação das aulas.

      Responder
  • Leanro comentou em

    Olá, Ricardo, primeiramente parabéns, suas aulas são show!
    Assisti o CRUD com OOP, porém você utilizou a conexão com o mysql, gostaria de saber se como faria a mesma coisa utilizando somente PDO. É possível?

    Responder
  • Dawdson comentou em

    Muito boa as aulas realmente.
    Estou aprendendo muito com as dicas.
    Teria alguma previsao de curso utilizando estruturas MVC.
    Muito obrigado.

    Responder
  • Thiago Luna comentou em

    Ótimas aulas. Melhores que muitos cursos.
    Aguardando o inicio deste curso.
    Parabéns!

    Responder

Deixe seu comentário