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

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 segunda aula vamos começar a codificar os arquivos do nosso sistema, inicialmente definindo algumas constantes que iremos precisar futuramente.

Na sequência iremos criar uma função que será responsável por inicializar o sistema verificando se os arquivos e configurações estão definidos corretamente, caso contrário um erro será mostrado e o sistema será impedido de carregar. Em seguida vamos criar as funções para carregamento de arquivos CSS e JS dinamicamente, facilitando assim a tarefa de inserção de arquivos externos em nossas páginas. Além de criar as funções, todas elas serão testadas e exemplificadas para que todos entendam como usar cada uma delas.

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

  • Roseane comentou em

    Professor, estou com problema na constante (_FILE_) onde eu devo declarar ela e quais os parâmetros que passo?

    Responder
  • Anderson Antonio comentou em

    Tudo bom,Ricardo.
    Confesso que procurava algum curso de codificação em PHP e Mysql, que fosse realmente sério e vi por diversas vezes o teu canal no youtube, porém por falta de entendimento, acreditei que pudesse estar ultrapassado devido a data de edição.
    Me enganei imensamente, pois o conteúdo é atual, seríssimo e de extrema qualidade.
    Continue assim, e não dê bola á alguns que só ocupam espaço.
    Deus é contigo meu amigo.
    até+.

    Responder
  • Fred comentou em

    Professor, como que faço um contador de tentativas para o login? Por exemplo, tentar logar 3 vezes, caso não consiga, desativar o botão de login por um tempo determinado?

    Responder
      • Fred comentou em

        E como que seria esse procedimento, me ajuda professor. Em que parte do código eu coloco isso?

        Responder
          • Fred comentou em

            Ta bom, seria na sessao.class.php? E como seria esse procedimento das tentativas?

          • Cara, para um pouco e pensa no que você precisa fazer, papel e caneta podem ser úteis. Vamos avaliar:
            Eu preciso limitar as tentativas de login, logo, preciso ter um local (variável de sessão ou campo do banco) que será iniciado com valor ZERO.
            A cada tentativa de login, esse campo deve ser incrementado.
            A cada tentativa de login, devo verificar se esse campo não atingiu o valor limite, neste caso impediria o login com base em alguma regra (tempo de espera por exemplo).
            Quando o tempo de espera passou, devo zerar novamente o campo para permitir uma nova tentativa de login.

  • Fred comentou em

    Refiz o curso de CRUD GENÉRICO. Ao fazer o método SELECIONARCAMPOS e testá-lo no arquivo teste.php, retornou isso no navegador:

    Notice: Undefined property: stdClass::$id in C:\xampp\htdocs\teste_crud\teste.php on line 52

    Notice: Undefined property: stdClass::$ativo in C:\xampp\htdocs\teste_crud\teste.php on line 52

    Notice: Undefined property: stdClass::$datacad in C:\xampp\htdocs\teste_crud\teste.php on line 52
    / Fred / ff@gg.com / admin / 21232f297a57a5a743894a0e4a801fc3 / / s /

    Notice: Undefined property: stdClass::$id in C:\xampp\htdocs\teste_crud\teste.php on line 52

    Notice: Undefined property: stdClass::$ativo in C:\xampp\htdocs\teste_crud\teste.php on line 52

    Notice: Undefined property: stdClass::$datacad in C:\xampp\htdocs\teste_crud\teste.php on line 52
    / Teste5 Bla Bla / teste5@gmail.com / teste5 / teste / / n /

    Responder
  • Fred comentou em

    Segui a aula 8 do Painel Administrativo, e ao tentar gravar no banco, deu esse erro:

    INSERT INTO paineladm_usuarios (VALUES (Ocorreu um erro com os seguintes detalhes:
    Arquivo: C:\xampp\htdocs\aulas\php\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 'VALUES (' at line 1

    Responder
    • Use a lógica aprendida no curso e expanda suas classes conforme sua necessidade. Este é um sistema básico que visa dar um norte para as pessoas, assim, as implementações de novas funcionalidades ficam a critério de cada um.

      Responder
  • Paulo comentou em

    No arquivo funcoes estou tendo problemas com o primeiro else, apresenta a seguinte mensagem:

    Parse error: syntax error, unexpected 'else' (T_ELSE) in C:\wamp\www\painel-adm\funcoes.php on line 6

    Responder
  • joaovitor comentou em

    Cara preciso dos arquivos presentes na pasta Classes, eles são só para assinantes premium ? Me manda aew se possivel!
    vlw

    Responder
  • Paulinho neto comentou em

    Gostaria de agradecer as informações contidas aqui,pois são de qualidades infinitamente superiores as encontradas na web porém possuem pouca indexacao de vosso conteudo nos motores de busca,onde eu mesmo achei vocês primeiramente no youtube depois que vim para o site,gostei da utilizações do escape(\n) no final dessa aula,porém sobre a identação que falou e que não foi foi feita nada mais é do que tabulação horizontal(\t) que resolvi acrecentando (\n\t),outro detalhe também é utilização de concatenação é achar uma formiga sem perna no meio de um formigueiro. preferi então utilizar os escapes necessários assim:

    echo '<style type="text/css">@import url("'.BASEURL.CSSPATH.$arquivo.'.css");</style>';
    echo "\n\t"; 
    
    echo '<link rel="stylesheet" type="text/css" href="'.BASEURL.CSSPATH.$arquivo.'.css" media="'.$media.'"/>';
    echo "\n\t";
    
    echo '<script type="text/javascript" src="'.$arquivo.'"></script>';
    echo "\n\t";

    Além disso tenho uma sugestão também, para que utilizem php source ou seja disponibilizem nos diretorios dos projetos em php os arquivos com extensão .phps que farão os codigos fontes php serem visualizados como foram feitos é claro para os usuarios premiuns(e quem sabe que não me darão esse previlégio pelas dicas ou convite de moderador nessa parceria convosco)para que não haja erro na replica do projeto pelos usuários com menos conhecimento e prática . exemplo arquivo funcao.php dessa video aula salve-como funcao.phps dentro do diretorio paineladm/phpsource/funcao.phps e aponte para isso um link com target=_blank na resenha dessa video aula e claro que ninguem num projeto real irá colocar php source em seus diretorios pois um simples filetype:phps funcoes no google acharia esse arquivo.

    outro detalhe importante é que deixem mais claro a reutilização nao somente das video aulas mas como também as classes como:
    banco.class , base.class e usuario.class acho mais importante nao é reutilização das aulas pois voces tem a marca do vosso logotipo em cada uma delas isso seria até bom para aumentar page rank se imaginem se colocassem voces mesmos um script de incorporar videos abaixo das vossas aulas então assim falariam podem reutizar nossas aulas porém utilizem nosso script de incorporação e coloque um de nossos banners em vosso site. amigos espero ter contribuido.

    Responder
  • Junior Eberhardt comentou em

    falai Ricardo, beleza?

    estava adaptando a função loadCSS() mas obtive erros...

    minha adaptação foi para carregar fontes do Google, e ficou assim:

    function loadCSS($arquivo = NULL, $media = 'screen', $import = 1) {
        if (!is_null($arquivo)) :
            if ($import == 1) :
    			// estilo externo
    			echo '<link rel="stylesheet" type="text/css" media="'.$media.'" href="'.BASEURL.CSSPATH.$arquivo.'.css" />';
    		elseif ($import == 2) :
    			// carrega fontes externas
    			echo '<link rel="stylesheet" type="text/css" media="'.$media.'" href="'.$arquivo.'" />';
    		elseif ($import == 3) :
    			// importa estilo
    			echo '<style type="text/css">@import url('.BASEURL.CSSPATH.$arquivo.'.css);</style>';
            endif;
        endif;
    } // loadCSS - carrega o CSS

    só que desta maneira eu tenho sempre que setar o segundo parâmetro o de media, senão dá erro, o programa troca as bolas, você poderia me dizer porque isso acontece?

    para funcionar perfeitamente tenho que fazer assim para importar fontes:

    loadCSS('http://fonts.googleapis.com/css?family=Concert+One', 'screen', 2);

    se eu fizer assim, como você explicou, não dá certo

    loadCSS('http://fonts.googleapis.com/css?family=Concert+One', NULL, 2);

    gostei muito desta função para carregamento de css e js.

    abraço.

    Responder
    • Junior, se você chamar a função que você fez passando NULL como parâmetro é a mesma coisa que chamar ela passando SCREEN=''. NULL significa nenhum valor, então se você não quiser definir o parâmetro SCREEN a cada chamada da função você precisa deixá-lo por último na ordem de parâmetros, e neste caso você poderia ignorar ele na chamada da função:

      function loadCSS($arquivo = NULL, $import = 1, $media = 'screen') {
          //codificao da funo
      }
      
      //chamada da funo fica assim
      loadCSS('http://fonts.googleapis.com/css?family=Concert+One', 2);
      Responder
      • Junior Eberhardt comentou em

        valeu pela ajuda, não me liguei que a ordem das variáveis alteraria o resultado, obrigado grande mestre...

        Responder
  • Junior Eberhardt comentou em

    falai Ricardo.

    então gostaria de saber, já que esta criando o sistema em OOP, porque a conexão com o banco de dados você não utiliza PDO?

    valeu....

    Responder
    • A idéia era fazer as pessoas perceberem a diferença entra programação procedural e programação OO. PDO é uma classe pronta, portanto se eu ensinar utilizar ela eu não estou ensinando OOP, mas sim como usar uma classe nativa.

      Responder
      • Junior Eberhardt comentou em

        beleza, obrigado por responder, muito bom o seu trabalho, muito profissional, e a sua didática é fenomenal..

        Responder
  • AndreDeCastro comentou em

    Estou ansioso para a próxima!!!! Já foram os 70 shares! rsrsrs ..... Parabéns Ricardo, vc é simplesmente excelente lessionando!

    Responder
  • Marcio comentou em

    Ótima aula, aguardando a proxíma, obrigado Ricardo por compartilhar seu conhecimento conoscoo.

    Responder
  • fabio.nasci comentou em

    Ótima aula aguardando a proxíma, obrigado Ricardo por continuar a compartilhar o seu tempo e conhecimento conosco. Abraço.

    Responder
  • marcello lima alves ferreira comentou em

    muito boa mesmo a aula agora sei que nada sei mesmo de php valeu mesmo

    Responder
  • Thiago dias comentou em

    eu fiz meio que uma gambiarra diferente do seu LoadCSS aqui :

    $url = 'http://localhost/iniciante/';
    if($arquivo != NULL){
        echo '<link href=" '.($url.'css/'.$arquivo.'.css'.'" rel="stylesheet"'.'type="text/css">')."n";

    essa gambiarra é correta ?

    Responder
    • Daí quando você quiser instalar o sistema em outro domínio vai ter que editar a função pois botou uma variável perdida lá com a URL do sistema. E o arquivo de configurações tá no sistema pra bonito neste caso? Desculpe Thiago, mas eu tentei pensar em funções simples e úteis, portanto fica a critério de cada um "estragar" ou "melhorar" as funções conforme seu gosto.

      Responder
  • Natan Alves comentou em

    Muito bom, Fiz o CRUD, vi as aulas de JQuery, e estou aprendendo muito com essas aulas, obrigado Ricardo.

    @Diego

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

    Postado Originalmente por Ricardo Bernardi

    Responder
  • Diego comentou em

    Assisti às aulas anteriores e não vi você inserindo o conteúdo no arquivo autoload.php. Qual o conteúdo do arquivo autoload.php ?

    Responder
  • Junior Eberhardt comentou em

    muito boa essa vídeo aula, não vejo a hora da próxima estar pronta...

    parabéns Ricardo, continue assim, você já me ajudou e ensinou bastante, mas quero mais...

    valeu

    Responder

Deixe seu comentário