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

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 vamos concluir o cadastro de usuários primeiramente fazendo a verificação de login e email duplicado e também criando uma função para mostrar na tela as mensagens já configuradas anteriormente no nosso CSS.

Para finalizar vamos criar uma função que irá verificar se o usuário logado no sistema é administrador ou não, a fim de impedir que um usuário limitado consiga cadastrar um novo administrador no sistema.

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

  • Guilherme Vasconcelos comentou em

    Olá, bom dia!

    Ricardo, gostaria de saber o que houve com este erro. Fiz todos os passo a passo na vídeo aula, exatamente igual, refiz por diversas vezes. Acontece que como estou acompanhando este curso apenas em 2015, obviamente estou tendo problemas com a conexão mysql de sintaxe, que no caso exige outra sintaxe de conexão. Porém, quando o mesmo está correto nos códigos, tem funcionado normalmente. Quando dá um erro no programa, aparece o erro e o erro de sintaxe - uma vez corrigido, some tudo e o Sistema volta a funcionar corretamente. Está rodando 99,9% dessa forma, porém, me apareceu um problema nesta vídeo aula. Quando faço toda a parada para o usuário normal não poder cadastrar como administrador, ele aparece erro de sintaxe do Banco Mysql e logo abaixo aparece assim: /> Controle total ao sistema.. gostaria de saber o que houve, pois já revi todos os códigos e vídeo aula. Acredito que seja falta de alguma tag, porém, fiz exatamente como está no vídeo. Tirando a parte que organizo da seguinte forma:

    blablabla
    Controle total ao Sistema

    Responder
  • redman comentou em

    Olá Ricardo,
    gostaria de saber se você pode postar algo sobre como dar somente ao administrador a opção de cadastrar novos usuários;
    achei muito aberto o sistema dando abertura de cadastro para qualquer usuário.

    obrigado

    Responder
  • dederssp comentou em

    Ricardo, estou fazendo um esse CRUD mas usando o foundation. PAra usar o Data Table não estou conseguindo, podia dar uma dica?

    Responder
  • dederssp comentou em

    Erro isAdmin() função
    Ocorreu um erro com os seguintes detalhes:
    Arquivo: C:\xampp\htdocs\projects\seagate\classes\banco.class.php
    Rotina: executaSQL
    Código: 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

    Não consigo achar o erro... aff

    Responder
      • dederssp comentou em

        Meu eu não tinha setado o dataSet... Mas achei bem estranho, pois não achei na video aula.. Só consegui arrumar batendo os arquivos. Deve ser sono... Poxa mas demorei 9 horas para descubrir hahaha. Valeu

        Responder
  • marcosfbo comentou em

    Bom dia professor,
    Conforme seu aviso de ausência temporária, espero que esteja melhor. E segundo parabenizo pela paciência e clareza das aulas, mas como todo aluno têm dificuldades, seguirei com mais uma para seu post:

    nas rotinas de validação de duplicidade no cadastro:

    if ($user->existeRegistro('login',$_POST['login'])):
    echo'Este login já cadastrado, escolha outro nome de usuário.';
    $duplicado = TRUE;
    endif;
    if ($user->existeRegistro('email',$_POST['email'])):
    echo 'Este email já cadastrado, escolha outro endereço.';
    $duplicado = TRUE;
    endif;

    não consigo obter o cenário LIMPO conforme apresentado em sua vídeo aula ( marcação 7:57) portanto passei hoje o dia inteiro agarrado lendo e relendo suas aulas anteriores inclusive o CRUD e não consegui identificar o por quê? Segue abaixo como é apresentado em meu alfarrábio.

    P.S.:
    O cadastro está funcionando perfeitamente. e gostaria de saber o porque a mensagem de erro vem neste idioma [ Mensagem: Erreur de syntaxe près de ' ]?

    =================================================================================
    Este login já cadastrado, escolha outro nome de usuário.Ocorreu um erro com os seguintes detalhes:
    Arquivo: C:\wamp\www\projetos\paineladm\classes\banco.class.php
    Rotina: executaSQL
    Codigo: 1064
    Mensagem: Erreur de syntaxe près de ' , , , FROM paineladm_usuarios WHERE email='aluisa@site.com'' à la ligne 1

    Informe os dados para cadastro
    =============================================================================================

    desde já te agradeço,
    atc,
    Marcos Fernando

    Responder
  • André Ventura comentou em

    Olá Ricardo, tudo bem?

    Precisei criar um combobox dinâmico para preencher estadocidades. Quando clico em estado, o segundo combobox é preenchido com as cidades. Fiz isto via Jquery. Acontece que para montar o segundo combobox(cidades) tive que criar um arquivo php (que carrego via jquery) para selecionar as cidades no DB e devolver o resultado. Criei este arquivo php na pasta raiz do projeto. O problema que gostaria de resolver é:
    - Dentro deste arquivo php não consegui utilizar(carregar) os objetos de conexão criado no curso, nem as classes, nem seu métodos. Tive que fazer a conexão e buscas no DB utilizando funçoes do php.
    Pergunto: Como faço para, ao crir um novo arquivo php, conseguir utilizar as classes e os metodos (selecionarTudo por exemplo) ? Será que devo, na verdade, em vez de criar um arquivo php para ser chamado no jquery, devo na verdade criar um função na classe da tabela correspondente a cidade e chamar esta função no jquery (não encontrei nenhum exemplo de como fazer desta forma) ?

    Obrigado e boas festas.

    Responder
    • Tudo deve girar em torno das classes do sistema, se precisar de algum procedimento extra, então ele deverá estar dentro de alguma classe para que haja a ligação entre tudo que é necessário.

      Responder
  • eduardo3045 comentou em

    Olá Ricardo!
    Primeiro quero agradecer suas excelentes videoaulas! PARABÉNS!
    Eu estou com esse problema abaixo, saberia dizer porque ocorre?é o unico problema que esta dando ate agora.

    ( ! ) Fatal error: Call to undefined function loadmodulo() in C:\wamp\www\paineladm\painel.php on line 8
    Call Stack
    # Time Memory Function Location
    1 0.0010 143920 {main}( ) ..\painel.php:0

    Responder
  • mandyrs comentou em

    Boa noite!
    Em primeiro lugar eu gostaria de parabenizá-lo pelo ótimo trabalho desenvolvido nesse painel.
    Estou tentando fazer umas modificações e precisaria de uma ajudinha. Será q vc pode me ajudar?

    Atenciosamente
    Carlos

    Responder
  • Roberto comentou em

    Olá Ricardo,
    Primeiramente meus parabéns por excelentes vídeo aulas.
    Continue assim, essa é minha segunda vez que estou assistindo a criação deste projeto.
    Agora vem a bronca, estou com um problema:

    Warning: mysql_close(): 12 is not a valid MySQL-Link resource in C:\wamp\www\painelAdm\classes\banco.class.php on line 27

    Você pode me explicar o que está acontecendo? Pois já tentei e muito.
    Valeu!!

    Responder
    • Uma conexão inexistente está sendo fechada, verifique se a conexão com o BD já não foi fechada e verifique sua classe "banco" buscando possíveis divergências nela.

      Responder
      • Roberto comentou em

        Muito obrigado pela resposta, Ricardo.
        Fui verificar isto no manual: "Usar mysql_close() não é normalmente necessário, já que as conexões não persistentes são automaticamente fechadas ao final da execução do script."
        O que você acha?
        --------
        Sei que está executando o close na mesma conexão várias vezes, mas não consegui encontrar a solução, também sei que foi depois que criei a função isAdmim() e a existeRegistro()... Daí só fiz colocar NULL na variável $conexao (método __destruct()).
        Obs: Este erro só acontece quando eu clico em cadastrar!
        --------
        Outra pergunta: Passar valores pelo $_GET é normal/seguro? ID, modulos, telas e etc.

        Sou um pouco novo no PHP, então ignora se estou fazendo alguma pergunta besta. Abraços!
        --------
        Trabalho e estudo, mas estou indo dormir super tarde por conta de tuas aulas, viciantes... Meus parabéns novamente.

        Responder
          • Roberto comentou em

            Obrigado, Ricardo.
            Perguntei pois você tem muito mais vivência do que eu na área de web.
            Fico grato por seus retornos...

  • alexandre m. comentou em

    helo. estou vi um campo de cadastro e login.
    gostaria de saber, o porke de me cadastrar? apesar de ja ter tentado e nao ter sido possivel.

    alexandre.de mocambique

    Responder
  • Elias Gomes comentou em

    Parabéns pelas aulas.

    Estava me perguntando: onde estão as funções inserir, atualizar e deletar. Não as vejo na classe Usuários.

    Responder
  • danielbarion comentou em

    Bom, como respondi a você ricardo no email, eu estou sem saídas pois reescrevi o código e não resolveu, tentei utilizar de outros métodos para encontrar o erro e também não obtive sucesso.
    Eu até estava pensando em pagar para poder obter o download desse arquivo no final da vídeo aula mas eu não quero o conteúdo da vídeo aula pronta, eu estou acompanhando e assistindo a um bom tempo, cheguei a assistir 5 aulas em 1 dia até não aguentar e ter que descansar, re-assisti as aulas diversas vezes, hoje eu fui tentar pela ultima vez encontrar o problema e seguir com as VA's, mas percebi iria ficar estressado depois de 3 horas mudando o código, então preferi recorrer a você pela ultima vez, como mencionei no email, eu tive diversos erros durante a VA mas eu consegui arrumar com alguns dias de pesquisa e revendo o código diversas vezes, porém eu já estou ficando louco com esse erro, entenda, se estou vindo pedir diretamente a você, é porque não tenho mais alternativas.

    Você é desenvolvedor e não deve ter escolhido essa área para trabalhar por "ganhar bem", mas como eu escolhi e muitos outras pessoas pelo mundo escolheram, escolhemos porque amamos programar, amamos escrever cada linha de código, aprender coisas novas e ter a ansiedade de testa-las o quanto antes.

    Eu te peço pela ultima vez, não vou tornar a incomoda-lo quanto a isso, já não suporto mais querer continuar as aulas, aprender métodos que até então não conhecia e não poder por estar com essa barreira na minha frente.

    Eu gostaria que me desse meia hora do seu tempo para ver o conteúdo todo que eu tenho e por favor me dizer aonde eu errei:

    http://sdrv.ms/14lvMXi

    Obrigado, não vou tornar a tocar nesse assunto.

    Responder
    • Os comentários que você deixou no post continham código fonte que prejudicava a exibição do blog, por isso foram deletados conforme prega nossa política de comentários.
      Reforço aqui que não posso pegar o código fonte de UM leitor e analisar linha a linha para descobrir um erro, se eu fizer isso para um, deve ser igual para todos, o que é totalmente impossível.

      Responder
  • igorsilva comentou em

    Ricardo eu comprei o post, mas não veio com os arquivos sql, eu tenho dificuldades com BD e gostria de saber se você poderia me enviar para meu e-mail
    desde já agradeço e um forte abç.

    Responder
  • eromweb comentou em

    Não estou encontrando o método selecionaCampo que está sendo chamado no método isAdmin... já olhei todas as vídeo aulas duas vezes e nada :(
    alguém pode me passar esse método informando em que classe ela ta ou entao dizer em que vídeo que esse método é feito?=)

    Responder
  • Jeovane Carvalho comentou em

    OlÁ Ricardo desconsidere minhas mensagens acima, apenas meu campo esta dando um seguinte erro, quando eu acesso como usuário limitado e entro no campo do formulário ainda consigo ativar o checkbox de adm quero dizer que consigo ativar mesmo como usuário limitado poderia me dar um dica e obrigado novamente...

    Responder
  • Jeovane Carvalho comentou em

    Mais um detalhe Ricardo no checked eu conferi varias vezes os codigos de isAdmin mas esta dando este erro e some os botoes de salvar dados e cancelar estes são os erros

    Warning: require_once (/ sessão.class.php): failed to open stream: Arquivo ou diretório em C: wamp www Aulas php paineladm classes autoload.php na linha 6
    Chamada de pilha
    # Tempo Memória Função Localização
    1 0,0019 142048 {Main} () .. Painel.php : 0
    2 0,0094 177856 loadmodulo () .. Painel.php : 9
    3 0,0111 197384 include_once ( 'C: wamp www Aulas php paineladm modulos usuarios.php' ) .. Funcoes.php : 45
    4 0,0115 197680 IsAdmin () .. Usuarios.php : 138
    5 0,0116 197864 __autoload () .. Usuarios.php : 99

    O segundo erro

    erro fatal: require_once (): Falha de abertura necessária '/ sessão.class.php' (include_path = '; C: php. pear') em C: wamp www Aulas php classes paineladm autoload.php na linha 6
    Chamada de pilha
    # Tempo Memória Função Localização
    1 0,0019 142048 {Main} () .. Painel.php : 0
    2 0,0094 177856 loadmodulo () .. Painel.php : 9
    3 0,0111 197384 include_once ( 'C: wamp www Aulas php paineladm modulos usuarios.php' ) .. Funcoes.php : 45
    4 0,0115 197680 IsAdmin () .. Usuarios.php : 138
    5 0,0116 197864 __autoload () .. Usuarios.php : 99

    Responder
  • Jeovane Carvalho comentou em

    Olá Ricardo a unica coisa que esta acontecendo comigo é quando eu repito o email além de apareçer aquela mensagem de erro tratada feita por vc na video aula apareçe tbm aquele erro de sql que aconteçeu com vc no final da video aula 08 ja revisei todos os códigos e não achei nada poderia me dar uma dica fico grato...

    Responder
  • José Ramon comentou em

    Obrigado pelas videos aulas ta nota 10!
    Estou com os seguintes problemas:

    eu fiz tudo certinho mais na hora desativar o checkbox como usuario normal ainda fica ativo oq pode ser eu revisei tudo e nada =/

    Aguardo resposta.

    obg.

    Responder
  • marcos holanda comentou em

    ola ricardo estou com um problema quando eu chamo a is admin
    e vou acessar ele meu redimencion para pagina index tentou erro na session mais
    código fonte excluído pois não foi postado conforme regras
    por causa do verifialogin(),
    interessante e que não é por a session esta vazio senão quando entrasse no painel tambem retornaria para pagina index.
    sera que pode me ajudar?

    Responder
  • Aprendiz comentou em

    Suas video aulas são ótimas, que Deus te abençõe e que vc tenha muito sucesso em sua vida, obrigado.

    Responder
  • Parabéns pelas vídeo-aulas e também pelo Blog.
    Acompanho desde o fim do ano passado e já tive motivos suficientes para adquirir a assinatura premium! Ainda essa semana o farei. Parabéns!

    Responder
  • André de Castro comentou em

    Olá Ricardo!
    Primeiro quero agradecer suas excelentes videoaulas! PARABÉNS!

    Eu tenho uma dúvida, digamos que eu tenha muitos registros no banco de dados. Quando eu buscar, primeiro o Jquery data-table vai ler todos e depois páginar? Isso não pode dar bug no sistema?

    Responder
  • Murilo Henrique comentou em

    Olá, com toda humildade quero pedir que se for possivel, quando este video alcaçar 70 shares, que creio que será rapido, se possível, que seja divulgado o link do 10 e 11, só pra não perder o pique que esta o curso, desde já agradeço e dou meus parabêns pelas video aulas.

    Obrigado.

    Responder

Deixe seu comentário