Painel de administração com PHP + OOP - Aula 07

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 uma aula do curso de criação de um painel administrativo utilizando PHP e orientação a objetos. Nesta aula faremos a criação do corpo do nosso painel, os arquivos de cabeçalho, rodapé e menu de navegação. Tudo será devidamente formatado via CSS para dar uma boa aparência ao sistema e para finalizar iremos criar o menu accordion com jQuery.

Mais posts desta série

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

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 42 comentários para este post. Participe você também, clique aqui e comente sobre o assunto.

  • Olá Ricardo, obrigado pelas aulas explicativas e muito boas...
    Logo no inicio dessa aula, ao modificar o arquivo paniel.php para dar os includes

    <?php
    include('header.php');

    Conteúdo do painel

    include('sidebar.php');
    inlude('footer.php');
    ?>

    Meu projeto(acompanhado ponto à ponto você) está dando erro de redirecionamento, eu abro chama como padrão o index.php Normal, faço o login ele já da erro, chama o painel.php e gera "Está página da web tem um loop de redirecionamento", ele não chamado nem header nem sidebar nem footer, já verifiquei 2 ou 3 vezes a aula voltando da aula anterior que é a 6 e deu tudo certo, só no começo da aula 7 no momento 7:49 que você testa o meu já está no erro de redirecionamento, ai eu volto do modo como estava antes de começar a aula e volta a funcionar.. já revisei até a aula anterior para ver se tinha algum erro porém não encontro nada.
    Teria como me dar uma mão?

    Responder
    • Sua página está com algum erros nos redirecionamentos que faz com que o loop nunca termine, revise todos os REDIRECTS do seu código e possivelmente encontrará algum erro.

      Responder
      • Ricardo consegui resolver o problema do loop de direcionamento porém tem um problema na minha classe de sessao.class.php
        erro apresenta quando faço login e vai pro painel.php
        Notice: A session had already been started - ignoring session_start() in C:\xampp\htdocs\painelAdministrativo\classes\sessao.class.php on line 16
        minha linha 16 do sessao.class.php é -> session_start();
        esse é o verificaLogin do funcoes.php conforme você fez
        function verificaLogin(){
        $sessao = new sessao();
        if($sessao->getNvars() getVar('logado')!= TRUE || $sessao->getVar('ip') != $_SERVER['REMOTE_ADDR']):
        redireciona('?erro=3');
        endif;
        }//vai verificar session, se pode ou não acessar certas páginas

        ==================================
        Sabe o que pode estar dando essa notice??

        Responder
  • redman comentou em

    Olá Ricardo
    tudo funcionou bem, com exceção do arquivo geral.js que não funciona de jeito nenhum; existe alguma configuração adicional?

    Responder
  • Valdir comentou em

    Olá Ricardo, Parabéns, está realmente muito bom o curso, estou aprendendo bastante.
    Me deparei com o seguinte erro:

    Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by

    pelo o que busquei saber, o erro é por causa da sessão não estar no começo de tudo. Já modifiquei varias coisas e continua.
    Poderia me ajudar.

    Grato desde já.

    Responder
  • Wanderson comentou em

    Boa tarde.
    Suas aulas são ótimas.
    Tive um pequeno problema com o 'accordion', em 'geral.js' não há o reconhecimento do "click" nem do "parent", dessa forma o meu não funciona, para acompanhar a aula eu fiz um ":hover" para dar um efeito parecido.
    O que posso fazer para resolver o problema?

    Obrigado por sua disposição em realizar essas aulas.

    Responder
  • Leandro Marques comentou em

    Olá Ricardo, estou aqui apenas para agradecer e relatar que a sua didática e muito boa, e como você mesmo diz GENTE prestem a atenção na digitação e pontuação tudo funciona perfeitamente principalmente se não trocar nomes de variáveis.

    Responder
  • kewzin comentou em

    Ricardo, me ajude por favor.
    Criei um novo módulo, até então no sidebar aparece tudo direitinho já tem um link e tals, só que criei um formulário para alteração de dados do bd, só que quando faço isso dinamicamente no dreamweaver e salvo tudo certinho, quando eu vou ver lá na minha página, o formulário dinâmico, simplesmente não aparece, só aparece o cabeçalho, cujo vimos nas vídeo-aulas! Por favor me ajude, já estou quebrando minha cabeça!

    Responder
  • Putz, estava tudo perfeito!
    Até que, após a implantação das sessions, começou a dar pau no funcoes.php, dando loop infinito nos redirects, até que a página fecha... alguém passou por isso?

    Obrigado!

    Responder
  • Pablo comentou em

    Boa noite Ricardo,
    Obrigado pelas videoaulas, material de 1ª.

    tire uma duvida, na codificação do geral.js já tinha a do radius5 para o fild, input e text. quando acresentei a codificação do accordion o mesmo não funcionou.
    depois de muito teste isolando as partes tive sucesso.
    a solução foi inverter a posição da codificação primeiro fiz a do accordion e segundo a do radius5. Sabe me dizer o por que do conflito?

    Desde já grato.

    Responder
  • Jeovane Carvalho comentou em

    Na verdade Ricardo ficou assim meu codigo em funcoes.php

    if($sessao->getNvars()<=0 || $sessao->getVar('logado')==TRUE || $sessao->getVar('ip')==$_SERVER['REMOTE_ADDR']):
      redireciona('?erro=3');
      endif;

    e na classe usuarios.php ficou assim

    $sessao = new sessao();
     if($sessao->getNvars() > 0 || $sessao->getVar('logado')==TRUE|| $sessao->getVar('ip')==$_SERVER['REMOTE_ADDR']) redireciona('painel.php');

    revisei todo o codigo e assim funcionou de acordo com a video aula e não deixa o usuario entrar direto no painel.php pelo link só logando eu não sei se essa alterção que fiz nos scripts afetará nas proximas aulas se estiver errado por favor me corrija...Obrigado

    Responder
  • Jeovane Carvalho comentou em

    Ola Galera, como diz aquele velho ditado "UM PEQUENO DETALHE NA VIDA, FAZ A DIREFENÇA" e no php tbm, rsrsrsr, estou trazendo um pouco do meu conhecimento sou ainda leigo ainda em PHP e pra quem esta ainda tendo problemas para fazer login com o que foi passado aqui pelo Ricardo na Aula 06 e esta dando aquele mesmo erro de loop (redirecionamento), e não consegue acessar o (painel.php) e só consegue acessar o painel quando vcs tiram o codigo ** verificaLogin(); ** do php ai vai a dica...
    Não mudem nada no script passado pelo Ricardo apenas um ponto de exclamação no código em funcoes.php vejam...

    Esse seria um pedaço do código passado pela video aula

    function verificaLogin(){
      $sessao = new sessao();
      if($sessao->getNvars()<=0 || $sessao->getVar('logado')!=TRUE):
      redireciona('?erro=3');
      endif;

    Esse seria o codigo alterado apenas troquem o ponto de exclamação por mais um sinal de igual (=) antes da palavra TRUE e tenho certeza que funcionará perfeitamente, pelo menos aqui no meu funfou direitinho vejam a alteração

    function verificaLogin(){
      $sessao = new sessao();
      if($sessao->getNvars()<=0 || $sessao->getVar('logado')==TRUE):
      redireciona('?erro=3');
      endif;
    Responder
    • Deve haver um erro em outro local, pois fazendo essa alteração sugerida por você a lógica do sistema fica errada, você está dizendo o seguinte pro sistema:

      Se não houver variáveis na sessão ou se a variável LOGADO for igual a TRUE (estranho não).

      Quem está tendo o erro de loop infinito é porque fez alguma coisa errada em outro script, não alterem nada pois não é necessário, basta seguir tudo que é mostrado nas aulas.

      Responder
      • Jeovane Carvalho comentou em

        Entendi Ricardo então estou com o mesmo tbm vou verificar novamente os scripts, obrigado.

        Responder
  • Kikinho Fernandes comentou em

    Boa noite Ricardo, td bem?

    na aula anterior tive o problema do verificaLogin() que até agora não consegui resolver, deixei ele comentado porque não vai! Agora nessa aula no header, ele reclama do protegeArquivo(); como se não leu o arquivo(funcoes.php).

    Parse error: syntax error, unexpected 'protegeArquivo' (T_STRING) in C:\wamp\www\meu caminho...

    Responder
  • Daniel comentou em

    Ricardo, boa tarde. Existe algum canal via email para assinantes premium? Talvez com imagens eu consiga explicar melhor minha dúvida, mas rapidamente, é isso:

    Tenho o charset definido no header conforme segue:

    No entanto, a acentuação de todas as palavras dentro do header.php estão em forma de ? dentro de um losango preto.

    E as demais páginas (sidebar.php, footer.php, e a div id=content) estão com a acentuação normal.

    Você sabe como posso corrigir o erro da header?

    Grato.

    Responder
    • Assinatura > Suporte
      Envie sua dúvida por lá, mas creio que você está com a codificação de sua página incorreta ou usou vários editores no mesmo arquivo causando algum conflito.

      Responder
  • Juan comentou em

    Apenas corrigindo...primeiramente desculpas ao Sidney Jr. Miranda, quando me referi ao aprender a ler, copiei o nome errado essa parte do comentário era para o Leo.

    Por favor peço ao Ricardo que se possível edite o meu comentário anterior e corrija os nomes do meu último comentário.

    Obrigado.

    Responder
  • Juan comentou em

    Acho que fui mal interpretado...
    Como disse no inicio do meu primeiro comentário, as aulas desse curso são muito boas, porém o conteúdo dessa aula em específico foi mais de ajustes nos arquivos praticamente e não teve uma quantidade de novidades comparadas as anteriores para ser compartilhada na quantidade exigida. Também sou a favor das metas, não falei nada sobre ser contra as metas no primeiro post. Apenas sugeri que diminiuisse uma vez que o conteúdo dessa aula, é praticamente rotina para a maioria das pessoas que estão acompanhando as aulas.

    Leo, fica a dica, leia (mas no sentido literal da palavra...ler = ler, interpretar e entender) os comentários de cada usuário aqui do blog, antes de "tentar" insultar alguém, niniguém desmereceu o mérito de ninguém nem questionou o tempo "perdido" para gravar as aulas e nem o tempo necessário para compartilhar e sim quanto a observação feita para essa aula em específico.

    Como pôde ser observado pelos demais comentários, o conteúdo dessa aula foi considerado apenas como básico e rotineiro para programadores (mesmo com nível de conhecimento básico).

    Espero que tenha esclarecido o mal entendido e mais uma vez o ricardo está de parabéns pela iniciativa, e não por causa de um comentário mal interpretado por terceiros que deveria radicalizar e criar conteúdo apenas premium.

    Forte abraços para todos.

    Responder
  • Sidney Jr. Miranda comentou em

    Vou deixa bem claro também que não sou contra as metas dos compartilhamento!!!
    Para mim é mais que justo!

    Responder
  • Sidney Jr. Miranda comentou em

    Assim galera acho que vocês não entenderam o lado do JUAN.
    Ele quis dizer, no meu entender, que as aulas do RICARDO começaram com um nível muito bom em todos aspectos seja de códigos e didática. Mas que nessa aula tivemos pouco conteúdo em relação as outras seis aulas.

    Responder
  • Leo comentou em

    Acho isso uma vergonha, um grande vergonha mesmo.
    Primeiro, ninguem tem o porque de reclamar, as aulas são de graças, ele não ta cobrando pelo que esta ensinando, logo ngm deve exigir nada dele.
    Segundo, isso de metas nem precisaria acontecer, mas acontece pq muitos são folgados até demais, que não tem o minimo de coragem de compartilhar em uma rede social, ele perde 10,20 minutos pra fazer uma aula, vcs perdem 10 segundos pra compartilhar e mesmo assim não tem coragem.
    Terceiro, é uma opinião, não sou assinante premium, pois não adiantaria devido a minha internet ser lenta e não ter banda larga, mas acho que da próxima ves ricardo, invés de shares, essas aulas deviam ser premium, ai esses folgados que reclamam não ia precisar de reclamar.

    Povo folgado esse, gosta de aprender, mas não gosta de ajudar.

    Responder
  • Junior Eberhardt comentou em

    Juan, com todo respeito, os vídeos são de graça, e diga-se de passagem que são ótimos vídeos, e se não for assim a galera não compartilha.

    Responder
  • Juan comentou em

    As aulas desse curso são muito boas, mas nessa aula vc não ensina nada praticamente, acredito que seria interessante diminuir significativamente a meta ou já postar a próxima video aula, pois não tem muito incentivo nesse video para ser compartilhado.

    Fica a dica e estamos no aguardo da próxima aula.

    Responder

Deixe seu comentário