Apostila PHP.docx

download Apostila PHP.docx

of 93

Transcript of Apostila PHP.docx

  • 7/22/2019 Apostila PHP.docx

    1/93

  • 7/22/2019 Apostila PHP.docx

    2/93

    CONTEDO PROGRAMTICO1. APRESENTAO

    2. DANDO VIDA AO HTML!

    Diferenas entre HTML e PHP

    Formulrio em HTML ou PHP?

    Funcionamento do PHP

    3. SEU PRIMEIRO PHP

    Criando um formulrio em PHP

    Como diagramar o layout da mensagem

    Variveis mais importantes

    Enviando Mensagens com PHP

    4. APRENDA A USAR UM BANCO DE DADOS

    Noes sobre Banco de Dados

    Entendendo o MySQL

    Criando base da dados e tabelas

    Adicionando e editando dados

    Conectando seu PHP a um banco de dados

    Adicionando, editando e excluindo dados atravs de funes PHP

    5. CRIE UM SISTEMA DE NEWSLETTER

    Aprenda a arquitetar seu sistema

    Cadastramento de contatos e emails

  • 7/22/2019 Apostila PHP.docx

    3/93

    6. "TUNANDO" SUA NEWSLETTER

    Crie um validador de emails

    Testando mltiplas condies com AND e OR

    Checando envio

    Trabalhando com checkboxes

    7. TRABALHANDO COM ARQUIVOS

    Guardando imagens e PDFs

    Como relacionar imagens e arquivos ao banco de dados

    Como fazer upload de arquivos com PHP

    GETs e POSTs

    8. SEGURANA

    Protegendo seus dados

    Deixando seu sistema PHP mais seguro

    Autenticaes

    9. CRIANDO SISTEMA COM USURIO E SENHA

    Construindo uma interface para login

    Encriptando senhas

    Autorizaes de usurios

    Cadastro de novos usurios

    Assinatura

    Cookies

  • 7/22/2019 Apostila PHP.docx

    4/93

    10. CONTROLE SEUS DADOS

    Trabalhando com mltiplas tabelas

    Relacionando dados

    11. CRIE UM SISTEMA DE BUSCA

    Trabalhando com strings

    Busca avanada

    Paginando resultados

    12. EXPRESSES REGULARES

    Trabalhando com padres ( Nmeros de telefone, CEP, email, etc)

    13. GERANDO GRFICOS COM PHP

    Aprenda a gerar nmeros de segurana (CAPTCHA)

    Gerando imagens a partir de funes GD e PHP

    Criando grficos automaticamente

    14. CONECTE SEU SISTEMA A OUTROS SERVIOS WEB

    Trabalhando com RSS e PHP

    Do banco de dados para o Newsreader

    Interao com YouTube

    15. CONCLUSO

  • 7/22/2019 Apostila PHP.docx

    5/93

    IntroduoMuito bom dia, boa tarde, boa noite, boa madrugada para voc aluno do Curso Online

    PHP para Web Designers! Finalmente hoje teremos noassa primeira aulinha que serdividido em trs partes. Na primeira parte explicarei como ser o funcionamento docurso, os objetivos, o que voc ir encontrar por aqui e uma mensagem de boas-vindas.Assista pois muito importante. Depois irei mostrar como transformar o seucomputador num servidor local. No obrigatrio mas ser de grande utilidade poisvoc poder testar seus sistemas rapidamente em seu computador. Porm recomendo atodos assinar um planozinho de hosting para que voc possa testar seus sistemas numservidor remoto. Logo mais abaixo irei falar mais sobre isso.

    Agora fique com minha mensagem de boas-vindas e explicao sobre o curso. Depoisde assistir continue lendo os textos que esto logo abaixo do vdeo.

    Video

    Quem Astrogildo?Voc deve ter percebido na vinheta dos vdeos a apario desse simptico ursinho.Trata-se de Astrogildo Bear, o web designer camarada que durante alguns anos esteveaqui conosco no Brasil. Com seu lindo pelo de pelcia, conquistou vrias ursinhas peloBrasil enquanto c viveu. Porm teve que voltar para sua terra natal, mais precisamente

    para as Ilhas Kodiak, terra dos ursos marrons, onde vive sua famlia. Enquanto moravaaqui deu o ar de sua graa em diversas aulas de nossos cursos. E agora ele est de volta

    para pedir nossa ajuda j que ele no quer perder contato com suas ursinhas brasileiras.Vamos ajud-lo nessa?

  • 7/22/2019 Apostila PHP.docx

    6/93

    Quem ElePHPant?

    Vocs perceberam o sorridente elefante azul que aparece na abertura dos nossos vdeos?

    Trata-se do ElePHPante, o simptico mascote do PHP. Esse grandalho ir ajudarAstrogildo na sua saga pelo mundo do PHP junto com vocs, meus queridos alunos!

  • 7/22/2019 Apostila PHP.docx

    7/93

    DESAFIO: Instalando o Apache, PHP e MySQL emseu computador

    Vamos comear nosso curso com esse desafio: instalar o Apache, PHP e MySQL no seu

    computador. Antigamente era mais difcil mas com o tempo foi ficando mais fcil, comsoftwares que podem nos ajudar nessa tarefa.

    Nosso objetivo nesse primeiro momento instalar um servidor local, onde voc podertestar os seus scripts PHP com maior rapidez.

    A misso transformar seu Windows num servidor web como qualquer outro. Devemosinstalar o Apache, o MySQL e o PHP em sua mquina. Vou explicar o que cada umdesses meninos faro:

    Apache: um software gratuito, considerado o mais bem sucedido servidor web

    gratuito do mundo. Atravs desse software que o seu computador se transformar numservidor web como qualquer outro. Voc poder rodar sistemas em php por exemplo ever a coisa funcionando em seu navegador.

    MySQL: trata-se de um sistema de gerenciamento de banco de dados que utiliza alinguagem SQL. Sendo mais direto, ele que vai armazenar as notcias, usurios e todasas informaes que voc queira armazenar atravs do seu sistema PHP. Seria umaespcie de armrio virtual. Quando o seu sistema quiser puxar aquela notcia que vocincluiu ontem, ele ir procurar nas gavetas do MySQL.

    PHP: a dita cuja. O responsvel pelo funcionamento de todas as engenhocas de um site.Instalando o PHP na sua mquina, os sistemas de atualizao, consulta ao MySQL etodos os outros sistemas que voc programar, podero funcionar tranquilamenterealizando todas as suas operaes.

    Existem duas formas de instalar esses trs sistemas em seu computador.

    1. Instalando um por um, caso voc goste de jogar no modo avanado ou seja umsadomasoquista. ;)

    2. Utilizando o Wampserver

    Eu prefiro o item nmero 2. O Wampserverinstala esses trs sistemas em sua mquinacom apenas alguns cliques, fcil, rpido e prtico. Em nossa vdeo-aula mostro comoinstalar o Wampserver, d uma olhadinha l:

    Video

  • 7/22/2019 Apostila PHP.docx

    8/93

    Aqui est o link de download doWampServer:http://www.wampserver.com/en/download.php

    Agora, caso o Wampserverno funcione, a o negcio apelar para o modo avanadodo jogo e tentar instalar manualmente cada sistema. Neste tutorial escrito por Marcos

    Eliasvoc ter todas as instrues de como instalar oApache, PHP e MySQLseparados sem auxlio do Wampserver:http://www.guiadohardware.net/tutoriais/apache-php-mysql-windows/

    Outra opo ao Wampserver o Xampp, que voc pode pegaraqui.Porm a suaconfigurao um pouco mais complicada.

    DESAFIO II: Instalando um Servidor de Email em seu

    computadorNas aulas que ainda viro vocs iro precisar testar seus formulrios, enviando seucontedo para algum email. Se o formulrio est sendo testado em seu servidor local,como que esse formulrio ser enviado para um email externo? Parece simples masno . Primeiro que hoje todo SMTP(servidor responsvel pelo envio de emails) necessita de autenticao com login esenha. Ento no basta mais colocar o endereo de smtp no cdigo php, necessriofazer com que o sistema se autentique nele, o que torna o trabalho um pouquinhocomplicado.

    Segundo que hoje grandes servidores de email como Google, Hotmail e Yahoo noaceitam mensagens partindo de servidores "caseiros" como o que voc est fazendoagora com seu computador. Eles barram automaticamente. Isso porqu espalhou-se pelomundo milhares de cavalo de tria que instalavam servidores de email nas mquinas desuas vtimas sem elas saberem, tudo isso para enviar spam adoidado sem ningum saberde onde partiu. Assim, todos os grandes hostings acabaram barrando emails enviados deservidores suspeitos, vindo de computadores e conexes comuns.

    Dessa forma o nico jeito de testar localmente o envio de emails instalando umservidor de email e criando um email local. Assim voc poder enviar formulrios para

    um email que est no seu prprio computador, no necessitando estar conectado ainternet nem que a mensagem passe pela grande rede, evitando assim que a mensagemseja barrada por antispam.

    No vdeo ensino a instalar um desses servidores, o Mercury/32. Assista o vdeo abaixo:

    Video

    http://www.wampserver.com/en/download.phphttp://www.wampserver.com/en/download.phphttp://www.guiadohardware.net/tutoriais/apache-php-mysql-windows/http://www.guiadohardware.net/tutoriais/apache-php-mysql-windows/http://sourceforge.net/projects/xampp/files/XAMPP%20Windows/1.7.2/xampp-win32-1.7.2.exe/downloadhttp://sourceforge.net/projects/xampp/files/XAMPP%20Windows/1.7.2/xampp-win32-1.7.2.exe/downloadhttp://sourceforge.net/projects/xampp/files/XAMPP%20Windows/1.7.2/xampp-win32-1.7.2.exe/downloadhttp://sourceforge.net/projects/xampp/files/XAMPP%20Windows/1.7.2/xampp-win32-1.7.2.exe/downloadhttp://www.guiadohardware.net/tutoriais/apache-php-mysql-windows/http://www.wampserver.com/en/download.php
  • 7/22/2019 Apostila PHP.docx

    9/93

    Para pegar oMercury/32clique aqui.

    NO FUNCIONOU? UTILIZE UM SERVIDORREMOTO

    Caso voc no tenha conseguido instalar o servidor local ou o servidor de email, no sepreocupe. Voc ainda est apto a fazer o curso. Para isso recomendo a contratao deum plano de hosting, onde voc poder testar as suas pginas e scripts num servidortotalmente pronto para isso. L j estaro rodando php, o apache e MySQL onde vocno ter preocupao nenhuma em fazer funcionar tudo isso. E se esses servios sairemdo ar voc ter o suporte da empresa de Hosting. A seguir indico uma dessas empresas

    ESSA PRA VALER: Teste seus scripts PHP

    Mesmo com servidor local, fundamental que voc teste seus scripts PHP num servidorremoto, onde voc poder testar pra valer o envio de formulrios pra qualquer email,sem ser o seu email @localhost. Por isso aconselho contratar junto com esse curso um

    plano de hospedagem, pequeno, com suporte a PHP para que voc possa testar seusscripts.

    Fizemos uma parceria muito legal que ir beneficiar todos vocs. Teste seus scripts PHP

    num servidor voltado exclusivamente para os nossos alunos do curso PHP para WebDesigners. Trata-se da empresaInternet Paulistaque se prontificou a criar um planoexclusivo para vocs por um preo simblico de R$ 7/ms. Digo simblico pois, afinal,R$ 7 no d nem pra comprar 5 esfihas de queijo, 1 kibe e 1 refresco de laranja noHabibs, no mesmo? ;)

    Aproveite essa oferta exclusiva. Para contratar o plano bastaclicar aqui.

    FirefoxSe voc Webdesigner ou Programador, esquea o IE como navegador principal. Tantonas aulas do Curso PSD para HTML & CSS como neste curso vocs notaro o quanto importante o Firefox em nossas vidas. Recortando e montando o layout que fique bemvisualizado no Firefox, ele tambm ser bem visualizado em outros navegadores...menos no IE. Porm, ao construir um layout tendo o Firefox como navegador primrio,facilmente possvel alterar o CSS atravs de CSS Hacks e folhas de estilo dedicadosapenas ao IE. J o contrrio, construir o layout para o IE como navegador principal edepois adaptar ao Firefox e demais navegadores, algo bem mais difcil. Portanto no

    perca tempo,use o Firefox j!

    http://www.snapfiles.com/get/mercury.htmlhttp://www.snapfiles.com/get/mercury.htmlhttp://www.snapfiles.com/get/mercury.htmlhttp://www.internetpaulista.com/cursoPHPhttp://www.internetpaulista.com/cursoPHPhttp://www.internetpaulista.com/cursoPHPhttp://www.internetpaulista.com/cursoPHPhttp://www.internetpaulista.com/cursoPHPhttp://download.mozilla.org/?product=firefox-3.0.10&os=win&lang=pt-BRhttp://download.mozilla.org/?product=firefox-3.0.10&os=win&lang=pt-BRhttp://download.mozilla.org/?product=firefox-3.0.10&os=win&lang=pt-BRhttp://download.mozilla.org/?product=firefox-3.0.10&os=win&lang=pt-BRhttp://www.internetpaulista.com/cursoPHPhttp://www.internetpaulista.com/cursoPHPhttp://www.snapfiles.com/get/mercury.html
  • 7/22/2019 Apostila PHP.docx

    10/93

    IE6

    Voc ainda usa? Que isso, esquea esse navegador. Entre nessacampanha.

    LIVROS INDICADOS

    Nossas aulas sero baseadas em diversos livros de PHP que serviro como fonte deexerccios e assuntos apresentados nesse curso. A aquisio desses livros no obrigatrio e voc poder acompanhar o curso normalmente sem eles. Mas recomendo acompra de um desses ttulos pois poder lhe ajudar muito:

    Desenvolvendo Web Sites com PHP, de Juliana NiederauerClique aqui para adquirir

    Aprendendo PHP & MySQL, de Jon PhilipsClique aqui para adquirir

    PHP 5: Guia de Consulta RpidaClique aqui apra adquirir

    Parte 2

    D vida a suas pginas HTML!

    Quem aqui j teve a oportunidade de fazer o curso PSD para HTML & CSS j sabecomo criar sites bem otimizados, seguindo os padres W3C, separando estrutura evisual utilizando os recursos do CSS. Porm, com o conhecimento de html e css, voc

    s conseguir criar sites passivos, sem interao do usurio no contedo das pginas. o que a gente chama de comunicao de uma via.

    HTML esttico chato pra caramba

    O HTML, puro e simples, no permite a manipulao de contedo entre diferentespartes do site muito menos a realizao de buscas, consulta a dados, etc. Ele foidesenvolvido apenas para mostrar informaes na tela, sem possibilidade de mudanasem tempo real, muito menos interao do visitante.

    http://imasters.uol.com.br/crossbrowserhttp://imasters.uol.com.br/crossbrowserhttp://imasters.uol.com.br/crossbrowserhttp://www.submarino.com.br/books_productdetails.asp?http://www.submarino.com.br/produto/1/156379/desenvolvendo+websites+com+php&franq=167521http://www.submarino.com.br/books_productdetails.asp?http://www.submarino.com.br/produto/1/156379/desenvolvendo+websites+com+php&franq=167521http://www.submarino.com.br/produto/1/21376911/aprendendo+php+e+mysql&franq=167521http://www.submarino.com.br/produto/1/21376911/aprendendo+php+e+mysql&franq=167521http://www.submarino.com.br/produto/1/21313466/php+5:+guia+de+consulta+rapida&franq=167521http://www.submarino.com.br/produto/1/21313466/php+5:+guia+de+consulta+rapida&franq=167521http://www.submarino.com.br/produto/1/21376911/aprendendo+php+e+mysql&franq=167521http://www.submarino.com.br/books_productdetails.asp?http://www.submarino.com.br/produto/1/156379/desenvolvendo+websites+com+php&franq=167521http://imasters.uol.com.br/crossbrowser
  • 7/22/2019 Apostila PHP.docx

    11/93

  • 7/22/2019 Apostila PHP.docx

    12/93

  • 7/22/2019 Apostila PHP.docx

    13/93

    Astrogildo voltou!

    , Astrogildo voltou! Mas dessa vez ele voltou para sua terra natal, no Alasca, maisprecisamente nas Ilhas Kodiak. Precisamos nos comunicar com ele e l a nica forma decomunicao atravs de sua pgina pessoal pois em Kodiak proibido aos outros

    ursos o uso do Orkut, MSN, Twitter e qualquer outra rede social.

    Alm disso, outro problema que Astrogildo antes de voltar para Kodiak me pediu paracriar um formulrio de contato em seu site e que no deixasse pblico o seu endereo deemail. Isso porqu ele tem medo dessa informao ficar pblica no s para spammerscomo tambm para outros ursos invejosos que ficam morrendo de raiva de seu sucesso,

    principalmente com as suas fs ursinhas de pelcia.

    Podemos fazer esse formulrio em HTML, o que voc acha? Vamos testar? Veja:

    Video

    EXPERIMENTE J!

    Vamos ver se esse negcio funciona. Voc pode ver como ficou o formulrioclicandoaqui.Aproveite e tente mandar um formulrio. Preencha tudo e clique em "Enviar!".Viu o que aconteceu?

    http://alunos.brunoavila.com.br/php/images/stories/aulas/formulario.htmlhttp://alunos.brunoavila.com.br/php/images/stories/aulas/formulario.htmlhttp://alunos.brunoavila.com.br/php/images/stories/aulas/formulario.htmlhttp://alunos.brunoavila.com.br/php/images/stories/aulas/formulario.htmlhttp://alunos.brunoavila.com.br/php/images/stories/aulas/formulario.htmlhttp://alunos.brunoavila.com.br/php/images/stories/aulas/formulario.html
  • 7/22/2019 Apostila PHP.docx

    14/93

    HOUSTON! HOUSTON! NS TEMOS UM PROBLEMA!

    Voc deve ter percebido que abriu uma janela do seu programa de email ou algo dotipo, correto? Alm das informaes ficarem todas embaralhadas, o email deleapareceu! E no isso que nosso querido ursinho camarada pediu. E agora Jos???

    Verificando o cdigo do formulrio vemos que est tudo ok. Menos uma coisa: o uso domailto.

    Quanto usamos o mailto, deixamos exposto o endereo de email para onde ser enviadoos dados do formulrio. Alm disso o email no enviado automaticamente, sendonecessrio a abertura de um programa de emails para que o formulrio seja enviado. O

    problema que nem todos utilizam esses programas, preferindo os webmails. Sem falarque voc no ter nenhum controle no armazenamento dos dados.

    Ser que o PHP pode resolver esse problema?

  • 7/22/2019 Apostila PHP.docx

    15/93

    PHP roda apenas no servidor

    Voc ir notar ao fazer seus sisteminhas em PHP que o cdigo colocado na pgina noaparecer no cdigo-fonte da pgina quando visualizado no navegador. Isso porqu

  • 7/22/2019 Apostila PHP.docx

    16/93

    todas as tags PHP servem para serem rodadas e processadas no servidor, entregando aonavegador apenas HTML e CSS. Para isso, todas as pginas contendo cdigos PHPdevem vir com a extenso ".php". Se voc colocar ".html" o servidor no ir saber queali dentro existem cdigos php e consequentemente no ir processar o que pedido.

  • 7/22/2019 Apostila PHP.docx

    17/93

    Substituindo o Mailto por uma ao PHP

    Vamos ento fazer nosso teste com o formulrio do Astrogildo, substituindo o mailtopelo cdigo PHP. Esse cdigo ir processar e enviar o contedo do formulriodiretamente para o email do Astrogildo sem precisar abrir nenhum programa de email

    para isso. Todos esses cdigos ficaro dentro de um arquivo PHP chamado envio.php

    Veja como faremos:

    Video

    TUDO QUE VOC QUIS SABER SOBRE PHP MAS TINHA MEDO DE PERGUNTAR (PARTE1)

    1. Bem, eu sei que essa pergunta parece bem besta mas... o que significa PHP?

    R: PHP (um acrnimo recursivo para "PHP: Hypertext Preprocessor") uma

    linguagem de programao de computadores interpretada, livre e muito utilizada paragerar contedo dinmico na World Wide Web, como por exemplo aWikipdia.;)

    2. P, quando eu acesso um site que tem no endereo final o arquivo com extenso

    ".php" eu vou l bisbilhotar o cdigo fonte e no encontro nada a no ser html.Porqu?! Cad o PHP?

    R: Os cdigos PHP so processados no servidor, entregando ao navegador o resultadodo processamento no formato HTML. No h nenhum processamento feito pelo

    navegador e o que voc v no browser apenas o resultado do processamento, por issoque o que voc v no cdigo-fonte apenas html.

    3. Ah t certo, acho que entendi...

    R: No se preocupe que no decorrer da aula voc vai entender ainda mais. Afinal voc

    est prestes a criar o seu primeiro script em PHP!

    Parte 03

    http://pt.wikipedia.org/wiki/Wikip%C3%A9diahttp://pt.wikipedia.org/wiki/Wikip%C3%A9diahttp://pt.wikipedia.org/wiki/Wikip%C3%A9diahttp://pt.wikipedia.org/wiki/Wikip%C3%A9dia
  • 7/22/2019 Apostila PHP.docx

    18/93

    Botando o formulrio PHP pra funcionar!

    Na ltima aula fizemos um formulrio HTML, mas vimos que no era isso queAstrogildo queria. O endereo de email dele ficaria exposto alm da mensagem ir todatruncada no email. Ento apelamos para o PHP, criando um arquivo separado com asinstrues dadas somente ao servidor, sem que o usurio visse o endereo doAstrogildo. O problema que no enviamos a mensagem por email.

    Agora vamos botar esse negcio pra funcionar dizendo ao servidor para onde ele deveenviar o email e com que cara essa mensagem deve chegar at Astrogildo. E ento, est

    preparado?

    Criando o corpo do email com PHP

    Voc j deve ter percebido que podemos puxar vrias informaes enviadas atravs deum formulrio colocando no meio de um texto esttico, utilizando PHP, no mesmo?

    Normalmente chamamos isso de concatenao, nome esquisito, mas que pode servisualizado nesses pontinhos a, olha s:

    Note que difcil entender esse emaranhado de letras, cifres e pontos. Uma dica daruma quebrada no cdigo s para visualizar melhor. Mas no se preocupe que mesmofazendo a quebra de linha o cdigo continuar funcionando. Olha s:

    $corpo = 'Nome' . $nome . 'diz que prefere um' . $preferencia .'Cidade:' . $cidade .

    'Estado:' . $estado .'Astrogildo bonito?' . $bonito .

    'Email:' . $email .

    'Tel:' . $telefone;'Mensagem:' . $mensagem;

    , deu pra entender melhor. Mas cada formatao? I sso vai aparecer tudomisturado, nno?

    verdade. Mesmo que voc organize o PHP no quer dizer que a mensagem no HTMLou no email v aparecer bonitinho tambm.

  • 7/22/2019 Apostila PHP.docx

    19/93

    Isso s para voc compreender melhor o cdigo quando for edit-lo mas para deixar acoisa bonita para quem for ver o resultado final necessrio colocar formataesHTML.

    Veja agora no vdeo o que foi que aconteceu depois de colocar o cdigo acima prafuncionar. Ser que ficou bonito ou embaralhado?

    Video

    Colocando o assunto e destino da mensagem

    Bem, como voc viu, rapidinho ns conseguimos fazer uma diagramao mais bonitapara o email enviado pelo formulrio. Agora vamos acrescentar algumas variveis

    importantes para a identificao do Email, o assunto e o destino do formulrio.

    Para isso, coloque as seguintes variveis em seu formulrio antes do $corpo:

    $to = "[email protected]"$subject = " Formulrio do Astrogi ldo"$corpo = "Name: $nome diz que prefere um $preferencia\n" ."Cidade: $cidade\n" .

    "Estado: $estado . '\n" .

    "Astrogildo bonito? $bonito\n" ."Email: $email\n" .

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/22/2019 Apostila PHP.docx

    20/93

    "Tel: $telefone\n" .

    "Mensagem: $mensagem";

    Veja agora no vdeo que fim levou essa histria:

    Video

    Tudo que voc queria saber sobre PHP mas tinha vergonha de perguntar

    1. O que acontece com o cdigo PHP no navegador?R: Nada, absolutamente nada. O navegador nem toma conhecimento de que existe PHP.Tudo rodado no servidor. O que o PHP faz processar a informao e enviar para onavegador a resposta em HTML. Ento o que o navegador v apenas uma pgina

    HTML, o PHP fica no servidor e no sai de l nem pra comprar po.

    2. T, mas como que o servidor sabe que quando PHP e HTML? R: Graas ao , lembra? O que estiver dentro desses sinais, quem cuidardisso o servidor, o restante, em HTML o navegador.

    3. T bom, mas como que o PHP vai enviar o resultado em HTML? Isso que not entendendo, em qu momento essa operao feita e como feita?R: a que entre em cena o comando echo. O que voc quiser que aparea escrito natela, voc colocar depois do echo, como foi mostrado em aula. Ser nesse local quevoc colocar os atributos HTML j conhecidos, como
    por exemplo e assimmontar a resposta que ser enviada para o navegador, em HTML.

  • 7/22/2019 Apostila PHP.docx

    21/93

    4. Tava vendo aqui, muito legal a histria das aspas duplas, facilita pra caramba!Po, porqu at agora a gente s tava usando aspas simples?R: Humm... verdade. Mas No se esquea que as aspas simples e aspas duplas temdiferenas importantes, no sendo processadas pelo PHP de qualquer maneira. As aspassimples por exemplo so ideais para frases sem variveis incorporadas. Ento ns

    vamos continuar a usar aspas simples a no ser que haja uma razo convincente parausar uma string com aspas duplas em vez disso.

    5. Por falar nisso, o que acontece se eu tiver que colocar a seguinte frase "Eu gostode tomar ovomaltine do Bob's" dentro de aspas simples? No vai dar problemaessa aspa a na palavra Bob's?R: Ah, vai sim. Por isso que voc deve utilizar o caractere de controle \, ou seja, uma

    barra invertida antes da aspa do Bob's. Pois seno o PHP vai interpretar que a frasetermina ali, no Bob'. Ento a coisa ficaria assim:

    'Eu gosto de tomar o ovomaltine do Bob\'s'

    Mesma coisa se voc quer colocar na frase um $. O PHP vai achar que uma varivel,ento o jeito tacar barra invertida nele. Nesse caso ficaria assim:

    'Ah, ovomaltine muito caro, R\$ 7 reais, t fora.'

    O que voc aprendeu at agora com o Tio Bruno

    PHPA linguagem PHP uma linguagem de programao de domnio especfico, ou seja, seuescopo se estende a um campo de atuao que o desenvolvimento web (embora tenhavariantes como o PHP-GTK). Seu propsito principal de implementar solues webvelozes, simples e eficientes.

    MySQLO MySQL um sistema de gerenciamento de banco de dados (SGBD), que utiliza alinguagem SQL (Linguagem de Consulta Estruturada, do ingls Structured QueryLanguage) como interface. atualmente um dos bancos de dados mais populares, commais de 10 milhes de instalaes pelo mundo.

    Todo script PHP s reconhecido como tal se voc escrev-lo entre esses sinais,iniciando com .

    VarivelUm recipiente de armazenamento para uma parte dos dados. No PHP, as variveis

  • 7/22/2019 Apostila PHP.docx

    22/93

    devem comear com o sinal de cifro, como este e $nome_varivel

    $_POSTVarivel global muito utilizada para envio de contedo atravs de formulrio.

    echoComando PHP para mostrar textos ou enviar comandos de formatao ao navegador.

    arrayUma estrutura de dados que armazena um conjunto de valores. Cada valor tem um textoidentificador que voc pode usar para acess-lo.

    Caractere de escapeUsado para representar caracteres em cdigo PHP que so difceis de escrever ou que

    possam entrar em conflito com outros cdigos, como \n (para uma nova linha)

    Arquivos da Aula 01

    Voc quer comparar o seu arquivo da Aula 01 com o meu? Entoclique aqui e faa odownload.

    Conectando a um banco de dados

    Nas duas primeiras aulas voc foi capaz de fazer seu primeiro script PHP. O scriptfuncionou bem, enviou o contedo do formulrio para o email do Astrogildo, assimcomo ele queria. Porm coisas estranhas aconteceram e que nem ele nem vocimaginavam que pudesse acontecer.

    Astrogildo no recebeu 1, 2, 5 emails. Ele recebeu dezenas, centenas, milhares deemails, chegando de minuto em minuto, sem parar, em sua caixa de email. O emailficou entupido. Para voc ter uma idia, ele conseguiu preencher os 10 gigas de espaoque o Gmail oferece. Eram emails de fs enlouquecidas com a beleza de nosso amigoursinho de pelcia.

    http://alunos.brunoavila.com.br/php/exercicios/aula01-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula01-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula01-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula01-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula01-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula01-cursophpparawebdesigners.zip
  • 7/22/2019 Apostila PHP.docx

    23/93

    MySQL

    A coisa t difcil de administrar. Como ler todos esses emails? Como responder todas asfs? Como fazer com que Astrogildo organize sua vida? Ah! Isso um trabalho para oMySQL!

  • 7/22/2019 Apostila PHP.docx

    24/93

    Nosso amigo MySQL, o banco de dados camarada ir nos ajudar nessa empreitada. Obanco de dados, segundo o pai dos burros internuticos, Wikipdia :

    Bancos de dados(ou bases de dados), so conjuntos de registros dispostos em

    estrutura regular que possibilita a reorganizao dos mesmos e produo deinformao. Um banco de dados normalmente agrupa registros utilizveis para um

    mesmo fim.

    Traduzindo, banco de dados nada mais que um conjunto de informaes armazenadose organizados de uma forma em que eu possa encontrar facilmente essas informaes,mover e editar. Existem diversos mtodos para se organizar alguma coisa. O mtodomais utilizado pelos bancos de dados o mtodo relacional, que utiliza tabelas,relacionando linhas e colunas.

    Existem diversos tipos de softwares gerenciadores de banco de dados. MySQL apenasum deles. Existem tambm Access, Dbase, Oracle, DB2 e tantos outros que nointeressam pra gente nesse momento. Vamos nos atentar ao MySQL.

    Existem duas formas de acessar o seu banco de dados MySQL. Atravs do MySQLTerminal, onde os comandos so todos por linha e com o phpMyAdmin, onde tudo visual e mais fcil.

    Na aula de introduo mostrei para voc como instalar o PHP e o MySQL na suamquina. Junto foi o phpMyAdmin. Se voc no viu esse vdeo, v at a aula deIntroduo e assista novamente. Alm disso a maioria dos servidores Linux que voc

    contratar vem com phpMyAdmin instalado. Veja com o suporte do seu hosting.

  • 7/22/2019 Apostila PHP.docx

    25/93

    Video

    ! Criando sua primeira base de dados

    Antes de mais nada preciso apresentar a vocs o phpMyAdmin. Apesar desse nomenos levar a acreditar que trata-se de "Meu administrador de PHP", ele na realidade temcomo funo principal administrar os seus bancos e tabelas MySQL.

    Claro que posso criar, editar, excluir tabelas utilizando comandos de linha, como os queusamos no prompt de comando do Windows ao manipular arquivos. Mas como no souto masoquista assim e no quero ver vocs sofrendo, por isso vamos utilizar algo maisvisual, utilizando o recurso do mouse para acessar bancos e tabelas. isso vai agilizar oseu trabalho e dessa forma iremos logo ao que interessa.

    Os comandos fundamentais do MySQL iremos ver mesmo assim, l na frente, quandoconectarmos com nosso script PHP. Ento senta, senta que l vem a histria!

    Conectando o PHP a um banco MySQL

    Com o banco de dados criado, devemos agora fazer com que aquele formulrio quevimos na aula 02 se conecte ao banco da dados que criamos, no caso o banco de dados"astrogildo", mais precisamente na tabela "formulario". Para isso eu preciso dizer aoPHP:

    1. O endereo onde est localizado o seu MySQL2. O login para acessar o banco de dados3. A senha para acessar o banco de dados4. O nome do banco de dados

    Sempre nessa ordem. No vdeo mostro direitinho pra voc como ser nossa empreitada

    rumo ao desconhecido.Video

    Tudo que voc queria saber sobre PHP e MySQL mastinha vergonha de perguntar ao Tio Bruno

  • 7/22/2019 Apostila PHP.docx

    26/93

    1. Eu no entendi a diferena entre banco de dados e tabela. Ambos no servempra guardar dados?R: Sim, mas as tabelas servem para dividir melhor os dados. Imagina voc jogando ummonte de currculos numa caixa bem grande. A voc tem que procurar o currculo doZezinho dentro de uma caixa com mais de 10 mil currculos. Se tivesse uma caixagrande, com caixinhas pequenas separadas por ordem alfabtica seria melhor no mesmo? Voc procuraria a caixinha da letra Z e assim acharia o currculo do Zezinho.

    2. Eu no posso colocar todo o cdigo SQL diretamente no mysqli_query () aoinvs de colocar tudo no $query?R: Sim, voc pode mas a coisa ficaria bem bagunada. Assim fica mais fcil entender

    seu cdigo.

    3. Legal, aprendi como inserir dados em uma tabela MySQL, mas ainda estou umpouco confuso sobre como as tabelas e seus dados foram parar l. E agora?R: Entendo sua preocupao querido(a) aluno(a). verdade que voc precisa entendercomo a coisa funciona e no apenas usar o cdigo que lhe apresentado. At agora,voc criou uma tabela sem entender muito da sintaxe CREATE TABLE. Pelo menos oformulrio do Astrogildo deu certo mas quando voc precisar criar vrias tabelas de seu

    prprio projeto, a o bicho vai pegar. Voc tambm vai precisar prestar ateno no tipode dado que voc estar armazenando e pensar sobre a melhor maneira de represent-la.Mas no se preocupe pois a brincadeira s est comeando. Vamos deixar isso para as

    cenas dos prximos captulos. Aguarde!

    Arquivos da Aula 02

    Voc quer comparar o seu arquivo da Aula 02 com o meu? Entoclique aqui e faa odownload.

    Parte 04

    Criando um sistema de Newsletters

    At o momento vimos apenas o bsico do bsico do bsico, que foi a criao de umformulrio gravando em banco de dados. Agora vamos fazer realmente uma aplicaoPHP pra valer com tela de administrao e tudo. Podemos dizer que esse ser a sua

    http://alunos.brunoavila.com.br/php/exercicios/aula02-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula02-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula02-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula02-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula02-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula02-cursophpparawebdesigners.zip
  • 7/22/2019 Apostila PHP.docx

    27/93

    primeira aplicao em PHP. E ser um sistema muito til, mais precisamente umsistema de envio de newsletter!

    Astrogildo entra para o mundo da Moda

    Tenho uma novidade muito legal para lhe contar. Astrogildo, aproveitando a sua famaquase que internacional, resolveu entrar no mundo da moda das ursinhas de pelcia. Ele,com seu faro apurado para o mundo dos negcios percebeu o mercado milionrio deroupinhas e acessrios para ursinhas de todo mundo. Foi a que teve a brilhante idia deabrir a sua loja, a Astr Fashion Bear.

    Comercializando apenas figurinos de primeira qualidade diretamente das Ilhas Kodiak,a terra dos ursos marrons, Astrogildo viu a necessidade de divulgar isso para o mundo,

    principalmente para suas fs brasileiras. Depois que criamos o formulrio doAstrogildo, ele recebeu dezenas de centenas de milhares de emails carinhosos de suas

    fs. A partir da coletou alguns emails e agora quer divulgar para elas sobre olanamento de sua loja.

    Astrogildo pensou em pegar seus 1580 emails e colocar no Outlook. S que o coitadodesistiu depois de copiar/colar os emails 340 vezes. Astrogildo precisa de uma soluo

    para isso.

  • 7/22/2019 Apostila PHP.docx

    28/93

    Uma aplicao PHP feita especialmente paraAstrogildo

    Uma aplicao um software desenhado especialmente para atender as necessidades

    especficas de seus usurios. Astrogildo precisa de uma aplicao onde o prpriousurio possa cadastrar o seu email, adicionando esse email numa lista gravada nobanco de dados e tambm uma aplicao voltada para o envio de emails a todos oscadastrados bastando colocar o texto e clicar em "enviar". Ento, a aplicao deveseguir os seguintes requisitos:

    Possibilitar o cliente (Astrogildo) a enviar emails para sua lista atravs do seunavegador web;

    Escrever o texto da mensagem, clicar em "Enviar" e a mensagem ser enviada a todosos cadastrados em sua lista de emails.

    Permitir a incluso de novos emails em sua lista a partir de seus usurios atravs deuma pgina de cadastro.

    A partir da j podemos arquitetar uma aplicao para nosso amigo Astrogildo. Bora desenhar

    esse esquema?

  • 7/22/2019 Apostila PHP.docx

    29/93

    Plano de Ataque!

    Vamos primeiro planejar como vamos comear a fazer isso tudo. Precisamos seguir umplano, comeando, claro, pelo comeo.

    1. Criar a base de dados e as tabelas da lista de emails.Essa tabela dever conter primeiro nome, ltimo nome e email.

    2. Criar o formulrio de cadastro de email com seu script PHP para adicionar

    novos clientes a lista.Esse formulrio dever ser algo simples, onde o cliente dever colocar facilmente seuprimeiro nome, ltimo nome e seu email.

    3. Criar o formulrio de envio de email com seu script PHP para o envio demensagens para todos os emails cadastrados.Finalmente iremos construir um formulrio onde nosso querido amigo Astrogildo

    poder compor sua mensagem de email e o mais importante, o script que far com queessa mensagem seja enviada para todos os emails cadastrados.

  • 7/22/2019 Apostila PHP.docx

    30/93

    Comeando com a base de dados e as tabelas

    O processo de criao da base de dados e das tabelas semelhante ao da ltima aula,quando fizemos o mesmo para o formulrio do Astrogildo. Dessa vez siga os passosatravs do PHPMyAdmin:

    1. Em criar "novo banco de dados", crie o banco astrofashiobear sem esquecer decolocar collation latin1_general_ci

    2. Em astrofashiobear crie a tabela lista_email com 3 arquivos.

    3. Em lista_email insira os campos nome, sobrenome e email, todos do tipo VARCHARe tamanho 20, 20 e 60 respectivamente. Basta mandar executar e pronto! Base de dadoscriada!

    Criando o cadastro de emails

    Astrogildo precisa de uma pgina contendo um formulrio para coletar os emails de suaclientela. Para isso iremos criar um script PHP que se conecte a base de dados quecriamos, incluindo esses dados na tabela lista_email.

    Na pgina cadastro.html vamos colocar apenas trs campos e um boto "enviar". Aintermediao entre o cadastro.html e o servidor ser feito pelo enviarcadastro.php.

    Vamos ver melhor tudo isso atravs do nosso primeiro vdeo. Ento senta, senta que lvem a histria!

    Video

    Criando a aplicao de envio de emails

    Bem, j vimos como criar o cadastro de emails, agora vamos para o mais importante, a

    tela de envio das mensagens para todos esses emails onde Astrogildo ir entrar emcontato com suas freguesas.

    A construo dessa aplicao bem semelhante ao que fizemos no cadastro de emailsmas com uma grande diferena: a ao do sistema dever ser feita repetidas vezes,enviando mensagem por mensagem a cada destinatrio sem a necessidade de clicarvrias vezes no boto "enviar". Tudo dever ocorrer automaticamente at o ltimoendereo de email.

  • 7/22/2019 Apostila PHP.docx

    31/93

    Em nosso segundo vdeo de hoje mostrarei como faremos o sistema de envio de emailsdo Astrogildo. Confira!

    Video

    Descadastrando emails importante sempre oferecer ao assinante do newsletter uma forma dele mesmo sedesecadastrar da lista. Portanto temos que criar um sisteminha de descadastro.

    O sistema muito simples e bem parecido com o script de cadastro. Por isso vou fazeruma brincadeira com vocs. Tentem criar o sistema de descadastro sozinhos, apenascom as dicas que vou dar a seguir. Depois de tentarem, passe para a prxima pgina

    para ver a soluo completa do caso. ;)

    1. Crie dois arquivos, o descadastrar.html e removeremail.php

  • 7/22/2019 Apostila PHP.docx

    32/93

    2. O descadastrar.html um formulrio simples, apenas com campo email e um actionpara removeremail.php

    3. Em removeremail.php no se esquea da sequncia: primeiro se faz a $conexao comlocal do banco de dados, login, senha e nome do banco de dados, depois puxe o

    contedo do campo $email usando o array global $_POST, siga com o $consulta onde adica utilizar o comando de banco de dados "DELETE FROM lista_email WHEREemail = '$email'". Faa o $result, logo depois crie um echo com algo como 'Emailremovido:' . $email; e finalmente fecha a conexo.

    Veja se voc consegue. Coloque um email que est cadastrado no banco de dados eento tente descadastr-lo com esse sisteminha. Somente depois de tentar, dando certoou no, passe para a prxima pgina.

    SOLUO: Descadastrando emails

    O sisteminha simples, se voc no conseguiu foi porqu esqueceu alguma coisinha.Veja s como ficaram os cdigos.

    1. descadastrar.html

    Astr Fashion Bear - Cadastro de Emails

    Astr Fashion Bear

    Coloque seu nome, sobrenome e email para se cadastrar em nossa newsletter.

    Email:

    2. removeremail.php

  • 7/22/2019 Apostila PHP.docx

    33/93

    Envio de Email

  • 7/22/2019 Apostila PHP.docx

    34/93

    Turbinando o sistema de Newsletter com comandoscondicionais

    Sistema de Newsletter do Astrogildo enfrenta problemas do mundo real

    Normalmente quando planejamos sites e sistemas, no conseguimos prever todos osproblemas que enfrentaremos pelo caminho. Nos testes tudo parece mil maravilhas. Masquando colocamos o sistema no ar, a realidade bem outra.

    Lembro do dia em que comprei minha primeira barraca de camping. Armei dentro doquarto, fcil de instalar, rapidamente consegui mont-la. Dias depois l estava eucorrendo atrs da barraca que voava como uma pipa nas areias dos lenis maranhenses.

    Eu no sabia que l ventava tanto. ;)

    Por isso comum modificarmos nossos projetos aps colocarmos no ar devido a umacoisa ou outra que no deu certo.

    E esse o caso do sistema de newsletter do nosso amigo Astrogildo. Colocamos osistema no ar e dias depois Astr comeou a receber emails de suas freguesas comreclamaes desconcertantes.

    Veja que a maior reclamao referente a emails estranhos, que chegam em branco ecom mensagens de teste. Estranho, muito estranho!

    Ser que o problema est no nosso enviaremail.php?

  • 7/22/2019 Apostila PHP.docx

    35/93

    Bem, Astrogildo foi investigar o que estava ocorrendo e para sua surpresa, o grandecausador de toda essa dor de cabea era ele mesmo!

    O problema entre a cadeira e o computador!

    Isso mesmo! Astrogildo clicava no formulrio sem querer, mesmo quando no tinhanada escrito no campo texto, apenas como teste ou sabe-se l porqu. Dessa forma,todas as suas 1500 freguesas cadastradas em seu informativo recebiam os tais emails em

    branco ou apenas com o assunto.

    Para resolver isso precisamos colocar algumas condies na nossa programao quediga ao PHP o que ele deve fazer em determinada situao.

    Para isso utilizaremos alguns comandos condicionais. Esses comandos, para quem sabeingls, bem fcil de entender. Vejamos o nosso caso. Precisamos dizer ao PHP que aoclicar no boto enviar seja verificado se o campo assunto e texto possuem algumcontedo. Caso no possua, o envio deve ser barrado para que no ocorra o problema doemail em branco ir para toda a lista. Ento, resumidamente, poderiamos dizer ao PHP oseguinte:

    "Ol Sr. PHP,

    SE o assunto tiver contedo Eo campo texto tambm,ENTOenvie o email.

    Obrigado,

    Bruno"

    Traduzindo isso para o ingls seria mais ou menos assim:

    "Hi Sr. PHP,

    I Fsubject form contain text AND text form too,THENsend email.

    Thanks,

    Bruno"

    Basta traduzir o texto que j verificamos a existncia de trs comandos condicionaisimportantes, o IF, AND e THEN. Ah! se PHP fosse em portugus! Seria mais fcilentender alguns comandos. Se voc comear a traduzir alguns deles, a coisa ficar maisfcil.

  • 7/22/2019 Apostila PHP.docx

    36/93

    Existem outros, mas primeiramente vamos nos atentar a um deles, o IF.

    Tomando decises com IFO comando condicional IF pode fazer com que seu cdigo tome decises baseado eminformaes do tipo verdadeiro ou falso.

    No exemplo abaixo mostro como geralmente utilizamos o comando IF:

    if (isValid($numero_cadastro)) {

    enviarCardastro();

    }

    1. Iniciamos com o comando IF

    2. Inserimos a condio de teste ou expresso condicional, sempre entre parnteses apsIF. Aqui que voc ir determinar se deseja testar a validade da informao, verificandose verdadeiro ou falso.

    3. Logo aps a expresso condicional, colocamos entre chaves a ao que deve serdesencadeada caso a expresso seja verdadeira ou falsa.

    Fale a verdade! Somente a verdade!

    A principal funo do IF testar condies, com interpretaes de falso ou verdadeiro.A aplicabilidade dessa funo variada, tanto para efeitos de comparao, validao decadastro. aplicao de aes e por a vai.

  • 7/22/2019 Apostila PHP.docx

    37/93

    1000 e 1 utilidades do IF

    Uma instruo "if" pode verificar se h mais do que apenas igualdade. A condio deteste em sua instruo "if" pode tambm verificar se um valor maior do que outro. Sefor, o resultado da condio ser verdadeiro e o cdigo da ao ser executado. Aquiesto alguns testes que voc pode usar para controlar a deciso de uma instruo if.

  • 7/22/2019 Apostila PHP.docx

    38/93

    Trabalhando com IF e outras funes no sistema doAstrogildo

  • 7/22/2019 Apostila PHP.docx

    39/93

    Agora que voc sabe o que IF e os comandos condicionais mais importantes, vamostrazer todos esses conhecimentos para a criao de solues que devero serempregadas no sistema de newsletter do Astrogildo, afim de proteg-lo de seus cliquesfora de hora.

    Veja o vdeo e divirta-se!

    Video

    Agora com voc!

    Vocs lembram do formulrio do Astrogildo que fizemos nas primeiras aulas? A suamisso ser resgatar esse formulrio e fazer algumas modificaes importantes com osconceitos que voc aprendeu na sala de hoje. O objetivo tornar todos os campos nome,email e mensagens em itens obrigatrios. Se no houver preenchimento, uma mensagemde erro deve aparecer, dizendo quais campos faltaram completar. E a, topa o desafio?

    Na prxima aula voc poder comparar o seu cdigo com o meu e assim identificar ospossveis erros. Alm disso iremos incrementar ainda mais nosso sistema de newsletter.

    Arquivos da Aula 04

    Voc quer comparar o seu arquivo da Aula 04 com o meu? Entoclique aqui e faa odownload.

    http://alunos.brunoavila.com.br/php/exercicios/aula04-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula04-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula04-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula04-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula04-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula04-cursophpparawebdesigners.zip
  • 7/22/2019 Apostila PHP.docx

    40/93

    Finalizando o sistema de Newsletter com comandoscondicionais

    Na ltima aula comeamos algumas reformas no sistema de Newsletter do Astrogildocom o objetivo de proteger o sistema dele mesmo! Alcanamos algumas melhorias,graas aos comandos condicionais que aprendemos. Agora precisamos finalizar essesistema pois ainda estamos escutando algumas reclamaes oriundas no s dasfreguesas como do prprio Astrogildo.

    Exibindo o formulrio sem clicar em "voltar"

    Astrogildo me confidenciou que estava de saco cheio de clicar no boto "voltar" donavegador toda vez que esquecia de preencher um dos campos do formulrio. Reclamoumas no deu nenhuma idia. Ai ai ai! Ento tive que matutar aqui o que fazer.

    Foi a que tive a idia de mostrar o formulrio junto com a mensagem de erro! E comisso vocs tero oportunidade de conhecer algumas coisinhas.

    Veja como ficou meu plano.

  • 7/22/2019 Apostila PHP.docx

    41/93

    Colocando o plano em prtica!

    Agora que voc tomou conhecimento do plano, vamos colocar ele em prtica. Vocdeve estar imaginando "Ah Bruno, isso moleza, basta repetir o formulrio, colocandoele dentro do enviaremail.php com echo". Ah ? Ento tente fazer isso e depois volte

    pra c.

    Os problemas so muitos. Primeiro que mesmo que seja o email seja enviado comsucesso, o formulrio ir aparecer. Outro problema, que ser muito chato, que o quefoi escrito no formulrio em admin.html no ser mantido no formulrio que aparecercom a mensagem de erro. Imagina, voc escreve um texto enorme no campo mensagem,esquece o assunto e ao clicar em enviar, aparece a mensagem de erro e o formulrio de

    novo sem nada escrito? Vontade de chorar...

    Por isso vamos fazer de uma forma que o formulrio aparea apenas com as mensagensde erro e conservando o que foi escrito na tela anterior. Veja em nosso primeiro vdeocomo que vamos fazer isso. com voc Tio Bruno!

    Video

    As freguesas ainda esto insatisfeitas

  • 7/22/2019 Apostila PHP.docx

    42/93

    Astrogildo ainda est passando por alguns problemas junto as suas freguesas queridas.Veja:

    Astrogildo! Eu recebi 5 emails seus com a mesma coisa!!! Ah, meu querido, assim nod! Eu gosto muito de voc, acho voc um fofo, mas 5 emails iguais a j abuso!

    Astr, eu concordo com ela, 5 emails iguais abuso mesmo. Mas pera, porqu 5emails iguais?

    , temos emails repetidos! E agora, quem poder nos defender?

  • 7/22/2019 Apostila PHP.docx

    43/93

    No contavam com minha astcia!

    Por alguma razo, freguesas de Astrogildo repetiram o mesmo email, apesar de nomesdiferentes. Vai ver da mesma famlia. Mas no interessa, temos que resolver issourgente! Sigam-me os bons!

    Video

    Soluo do Dever de Casa

    Para voc que topou o desafio do exerccio e tentou em casa meus parabns! Agoravoc poder comparar com o meu cdigo. O objetivo era validar apenas os camposnome, email e mensagem. Veja como ficouclicando aqui.

    Arquivos da Aula 05

    Voc quer comparar o seu arquivo da Aula 05 com o meu? Entoclique aqui e faa o

    download.

    http://alunos.brunoavila.com.br/php/exercicios/solucao-exercicio-validacao.ziphttp://alunos.brunoavila.com.br/php/exercicios/solucao-exercicio-validacao.ziphttp://alunos.brunoavila.com.br/php/exercicios/solucao-exercicio-validacao.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula05-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula05-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula05-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula05-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula05-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula05-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/solucao-exercicio-validacao.zip
  • 7/22/2019 Apostila PHP.docx

    44/93

    Enviando, guardando e consultando arquivos atravsdo PHP e MySQL

    Voc at agora aprendeu a guardar textos, nomes e nmeros no banco de dados no mesmo? Agora, como que guardamos dados binrios? Estou falando de imagens,arquivos PDF, ZIP, etc. Parece complicado mas s parece mesmo. No coisa do outromundo no, sem dvida mais fcil do que fazer um bolo de chocolate. Quer ver? Ento

    pegue uma travessa untada e anti-aderente e vamos l!

    Concurso de Pescaria: o novo hobby do Astrogildo

    Astrogildo, ao voltar para as ilhas Kodiak, relembrou uma velha brincadeira de infnciaentre os ursos da regio. Como vocs sabem, ursos marrons adoram peixe, sobretudo

    salmo. E pescar sempre fez parte da cultura local. Quando Astrogildo estava no Brasilera frequente suas visitas a restaurantes japoneses para provar de tal iguaria e matarsaudade de sua terrinha.

    Agora, de volta a Kodiak, Astrogildo promove concursos de pescaria para ver quempega o peixe mais pesado. Foi a que Astr teve a idia de armazenar todas essasinformaes na Internet e assim todos os competidores ficarem sabendo quem foi que

    pegou o peixe mais gordo da ilha.

    A voc deve pensar: "fcil, basta criar um formulrio onde o pescador colocaria o nomee o peso do peixe. Isso seria gravado no banco de dados e quando consultado apareceria

  • 7/22/2019 Apostila PHP.docx

    45/93

    numa lista em ordem descrescente de peso, mostrando no topo da lista o peixe maispesado."

    Ah! Mas voc acredita em histria de pescador? Vai confiar na informao dada peloprprio sem nenhuma comprovao de veridicidade?

    Veja s, tenho uma idia:

    Criando o cadastro associado a data

    A idia do esquema anterior onde iremos agregar uma foto ao cadastro boa. Assim opescador vai ter que comprovar atravs de foto que pegou mesmo um peixe com o peso

    que ele registrou. T, tudo bem, ele at pode tentar burlar no Photoshop, mas pelomenos um trabalho a mais e o que queremos dificultar a enrolao, no mesmo? ;)

    Primeiro vamos fazer o cadastro simples, pedindo o nome, peso do peixe e fazer comque ao gravar esse cadastro v junto a data de gravao. Veja o esquema:

  • 7/22/2019 Apostila PHP.docx

    46/93

    Veja agora no vdeo abaixo como vamos fazer isso. com voc Tio Bruno!

    Video

    Download do arquivo SQL com para ser importado no banco de dados

    Aqui est oarquivoque citei no vdeo com todas as configuraes da tabela "pescaria".Bastaclicar aquie proceder como no vdeo.

    Como guardar uma imagem no MySQL?

    Agora chegou o ponto crucial, como que vou mandar uma imagem pro servidor eguard-lo tambm no MySQL atrelado a um cadastro? Bem, vou apresentar para vocsum plano de ataque que pode nos auxiliar nessa tarefa.

    http://alunos.brunoavila.com.br/php/exercicios/pescaria.sqlhttp://alunos.brunoavila.com.br/php/exercicios/pescaria.sqlhttp://alunos.brunoavila.com.br/php/exercicios/pescaria.sqlhttp://alunos.brunoavila.com.br/php/exercicios/pescaria.sqlhttp://alunos.brunoavila.com.br/php/exercicios/pescaria.sqlhttp://alunos.brunoavila.com.br/php/exercicios/pescaria.sqlhttp://alunos.brunoavila.com.br/php/exercicios/pescaria.sqlhttp://alunos.brunoavila.com.br/php/exercicios/pescaria.sql
  • 7/22/2019 Apostila PHP.docx

    47/93

    1a Etapa: Adicionando a coluna imagem

    Como definido em nosso plano de ataque, vamos comear adicionando uma coluna nanossa tabela pescaria. A forma como se faz voc j conhece, lembra do sistema denewsletter? Pois ento, a coisa parecida, v no seu PHPMyAdmin, selecione o banco"Astrogildo", clique na tabela pescaria e nas abazinhas que iro aparecer no topo,selecione "Estrutura".

    Em "Estrutura", l embaixo, adicione 1 campo, no final da tabela e clique em"Executar".

    Aparecer a tela de cadastro de novo campo, coloque o nome de "imagem", tipo"VARCHAR" e tamanho 64. Clique em executar e pronto, est criado a nova coluna!

    2a Etapa: incluindo o campo de envio de imagem emadicionar.php

    Voc agora dever editar o arquivo adicionar.php que comeamos a fazer no vdeo.Abra o arquivo e faa a seguinte modificao:

  • 7/22/2019 Apostila PHP.docx

    48/93

  • 7/22/2019 Apostila PHP.docx

    49/93

    4a Etapa: informando o local onde o arquivo sergravado

    Vamos fazer com que a imagem aparea na listagem no seu index.php. Abra ele e aps:

    while ($row = mysqli_fetch_array($dados)) {

    coloque o seguinte cdigo:

    echo '';echo '' . $row['peso'] . '
    ';echo 'Nome: ' . $row['nome'] . '
    ';

    echo 'Data: ' . $row['data'] . '';

    if (is_file($row['imagem']) && filesize($row['imagem']) > 0) {echo ' ';

    }else {

    echo '';

    }}

    echo '';

    mysqli_close($dbc);

    ?>

    Note que acrescentamos em echo algumas informaes para que a imagem aparea.Deixa eu explicar algumas dessas linhas:

    if (is_fi le($row['imagem' ]) & & fi lesize($row[' imagem' ]) > 0) {A funo "is_file" verifica se o arquivo da imagem realmente existe. J o "filesize"

    verifica se o arquivo de imagem est vazio ou no, checando seus kilobytes.echo 'Portanto, se o arquivo imagem existir e se ele tiver tamanho em kilobytes maior quezero, pode mostrar a imagem sem medo de ser feliz.

    else {echo '' ;

    Agora se o arquivo no existir ou tiver 0 byte, a ao invs de no mostrar nada, digopara mostrar o arquivo "vazio.gif" com um alt "sem imagem".

    Feito essas alteraes, basta gravar o index.php

  • 7/22/2019 Apostila PHP.docx

    50/93

    Bem, chegou a hora de dizer ao PHP onde ele dever gravar as imagens e testar tudo praver se realmente a imagem vai ser enviada. Fique agora com o segundo vdeo do TioBruno. com voc!

    Video

    O index.php continua "Sem Imagem" ?

    Se voc abriu o index.php e continua aparecendo "sem imagem", no fique preocupadono, ainda daremos uma guaribada nesse index. Iremos adapt-lo para que a imagemseja puxada do banco de dados, com os pesos em ordem descrescente, alm de criarformas de remover o cadastro e uma pequena tela de administrao. T vendo? Temmuita coisa ainda! Mas isso sero cenas dos prximos captulos. Aguardem!

    Arquivos da Aula 06

    Voc quer comparar o seu arquivo da Aula 06 com o meu? Entoclique aqui e faa odownload.

    http://alunos.brunoavila.com.br/php/exercicios/aula06-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula06-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula06-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula06-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula06-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula06-cursophpparawebdesigners.zip
  • 7/22/2019 Apostila PHP.docx

    51/93

    Enviando, guardando e consultando arquivos atravsdo PHP e MySQL - Parte II

    Na ltima aula voc foi pego pela pegadinha do malandro, no foi? "Se voc t triste,

    no fique triste" costuma dizer Malandro, mas no fique triste mesmo pois hoje iremossolucionar esse problema e tantos outros que voc sequer sabia que existia.

    Vamos comear ento a estruturar nosso script, fazendo algumas mudanas que nossero muito teis. A primeira separar do script algumas informaes de conexo ecaminhos de arquivo.

    Compartilhamento de scripts requeridos

    No nosso sisteminha de pontuao existem alguns comandos que se repetem na maioriados scripts. Que tal a gente separar essas informaes criando um outro arquivo e

    fazendo apenas um link entre o arquivo e o script? Veja o esquema abaixo:

    Voc deve fazer o seguinte, siga os passos:

    1. Crie um arquivo chamado path.php2. V at o adicionar.php e pegue somente a linha referente ao caminho da pasta ondeficaro as fotos, esse aqui:

  • 7/22/2019 Apostila PHP.docx

    52/93

    3. Salve o arquivo path.php. Agora vamos chamar esse arquivo no index.php eadicionar.php. Abra os dois arquivos e inclua a seguinte linha logo aps

  • 7/22/2019 Apostila PHP.docx

    53/93

    3. Depois de salvar conexao.php apague as informaes de conexo de index.php eadicionar.php, substituindo inclua uma outra linha onde voc ir definir o tamanhomximo do arquivo, ficando todo o cdigo assim:

    4. Salve o arquivo path.php. Agora vamos chamar esse arquivo no index.php eadicionar.php. Abra os dois arquivos e inclua a seguinte linha abaixo derequire_once('path.php');:

    require_once('path.php');require_once('conexao.php');

    Maravilha! Agora se voc alterar o nome do banco, senha, etc, facilmente voc poderfazer no arquivo conexao.php, modificando em todos os scripts.

    Colocando o peso em ordem

    Voc deve ter notado que todos os pesos esto bagunados. No esto em ordemdecrescente com os maiores pesos entre os primeiros e os menores pesos no final. Hojeesto ordenados por nmero de cadastro. Precisamos mudar isso. Mas como?

    Veja como vamos fazer isso e algumas outras coisas no nosso vdeo de hoje. comvoc Tio Bruno!

    video

    Planejando a administrao do sistema

    Para remover alguns resultados sem imagens, ou seja, sem comprovao deautenticidade, perfeitamente possvel usar apenas o PHPMyAdmin para remover

  • 7/22/2019 Apostila PHP.docx

    54/93

    manualmente os registros no banco de dados utilizando a funo DELETE. Mas issopoder ser frequente e tornar um saco toda vez que recorrer a tela de administrao doMySQL para apagar registros, sem falar no risco que Astrogildo vai ter de clicar num

    boto errado e apagar a tabela toda! A idia aqui criar um aplicativo que possa sermantida pelo administrador do site com o menor risco de aborrecimento possvel.

    O que precisamos de uma pgina que somente o administrador do site tenha acesso,podendo us-lo para remover pontos. Estamos falando de uma pgina de Admin. Pormprecisamos ter muito cuidado em fazer uma distino clara entre a tela destinada aoadministrador do site e o layout destinado aos usurios do site.

  • 7/22/2019 Apostila PHP.docx

    55/93

    Embora possamos fazer um script para remover os registros da tabela num arquivo dotipo remover.php, precisamos de um script dentro do admin, que nos permita selecionarcada registro para fazer a remoo. O script admin.php deve gerar uma lista de pesosindo do mais alto para o mais baixo, com links em cada registro para remov-lo ao

    clicar. Estes links repassaro os dados a serem removidos ao script removescore.phpque completar a operao.

  • 7/22/2019 Apostila PHP.docx

    56/93

    Tio Bruno ir mostrar isso para gente em vdeo, veja:

    video

    Arquivos da Aula 07 e 08

    Voc quer comparar o seu arquivo da Aula 7 e 08 com o meu? Entoclique aqui e faao download.

    Segurana com PHP

    Socorro! Apagaram tuuuudo!

    Foi com os gritos de Astrogildo que fui acordado no meio da noite. Astr me ligou nomeio da madrugada para dizer que tinham apagado todos os registros do concurso de

    pescaria. Fui correndo para a Internet quando me deparei com cena to desoladora.Nada, absolutamente nada sobrou dos registros dos salmes e seus respectivos pesos.

    E agora?

    Tranquilizei Astrogildo dizendo q tinha uma cpia de backup guardada dos ltimosregistros. E que o que ele precisava era de segurana. Realmente vacilamos em deixar atela de administrao aberta.

    Em breve reunio por teleconferncia Ilhas Kodiak - Brasil, chegamos a algumasconcluses e metas. Vamos a elas:

    1. Proteo por usurio e senha. necessrio uma proteo para a tela de administrao,com usurio e senha para que ela no fique assim exposta pra todo mundo. Somentequem tiver posse desses dados conseguir acessar e remover os registros.

    2. Criar um registro de usurios. Para que exista uma tela de login necessrio colocarem algum local os dados de login e senha, registrando o usurio que a gente determinar.

    3. Criar uma opo de moderao, onde antes do resultado entrar no ar voc poderaprovar ou no aquele resultado.

    http://alunos.brunoavila.com.br/php/exercicios/aula07-08-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula07-08-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula07-08-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula07-08-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula07-08-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula07-08-cursophpparawebdesigners.zip
  • 7/22/2019 Apostila PHP.docx

    57/93

    Ento queridos alunos, sigam-me os bons!

    Protegendo a tela da administrao

    O que eu acho legal no Astrogildo que ele inventa essas besteirolas dele mas pelomenos a gente acaba aprendendo. O nosso primeiro desafio colocar uma tela de logine senha na administrao do sistema. Existem inmeras formas de se fazer isso pormescolhi uma das formas, a autenticao via HTTP.

    Com esse tipo de autenticao aparecer uma tela do prprio navegador pedindo o logine senha da administrao, como esse que mostro a seguir:

  • 7/22/2019 Apostila PHP.docx

    58/93

    PHP entra em ao atravs de seu acesso ao nome de usurio e senha digitada pelo ousurio. Eles so armazenados no superglobal $SERVER, que similar a outrossuperglobals que voc j usou ($ _POST, $_FILES, etc...). Um script PHP pode analisaro nome de usurio e senha digitados pelo usurio e decidir se ele devem ser autorizado

    ou no a ter acesso pgina protegida.

    A autenticao HTTP t precisando de cabea...

    A idia por trs de autenticao HTTP que o servidor possui uma pgina protegida eento pede ao navegador para alertar ao usurio que necessrio colocar um login esenha. Se o usurio digita essas informaes corretamente, o navegador vai em frente edeixa voc entrar na pgina. Este dilogo entre o navegador e o servidor ocorre atravs

    de cabealhos, o que chamamos de headers, que so pequenas mensagens cominstrues especficas sobre o que est sendo solicitado ou entregue.

    Headersso utilizados cada vez que voc visita uma pgina web e no apenas quando aautenticao necessria. Veja no esquema abaixo como uma pgina web sem proteo entregue a partir do servidor para o navegador com a ajuda de cabealhos:

  • 7/22/2019 Apostila PHP.docx

    59/93

    Controlando headers com PHP

    possvel criar e controlar headers utilizando PHP com a funo header(). Essa funoimediatamente envia um cabealho do servidor para o navegador, onde deve serchamado antes de qualquer contedo real enviado para o navegador. Esta umaexigncia muito rigorosa - mesmo se um nico caractere ou espao enviado frente de

  • 7/22/2019 Apostila PHP.docx

    60/93

    um cabealho, o navegador ir rejeit-la com um erro. Por esta razo, as chamadas parao header() deve preceder qualquer cdigo HTML em PHP. Veja s:

    Autenticando com headers!

    Autenticar a pgina de administrao usando headers envolve a elaborao de umconjunto muito especfico de header, dois na verdade, que permitem ao navegador sabercomo solicitar ao usurio um login e senha antes de entrar na pgina. Estes doiscabealhos so gerados pelo cdigo PHP no script de administrao.

    Preste ateno no vdeo do Tio Bruno, ele ir mostrar pra gente como faremos essa

    autenticao. com voc Tio Bruno

    Video

    Segurana contra a m-f humana

    Agora o problema outro. Desde que colocamos o sistema no ar, Astrogildo vinha sequeixando de pescadores maldosos e mentirosos que colocavam fotos claramente

    photoshopadas, com salmes com o tamanho de verdadeiras baleias jubarte.

    Infelizmente o PHP no tem olhos para poder verificar cada foto e barrar aqueles comevidncias de montagem. Por isso a nica maneira de barrar esses registros criando

  • 7/22/2019 Apostila PHP.docx

    61/93

    uma moderao a cada registro novo.

    A idia que, na tela de administrao, aparea um link "aprovar" somente nos registrosincludos recentemente.

    Para isso desenvolvemos um plano, dividido em 4 etapas.

    1. Criar uma outra coluna na tabela pescaria chamada "aprovacao".

    2. Criar um script responsvel por modificar o status da aprovao no banco de dados,se o administrador dizer que no est aprovado, ser gravado o nmero zero na colunaaprovao, se for aprovado ser gravado o nmero 1.

    3. Modificar a pgina de admin para incluir o link "Aprovar" somente nos registrosnovos e assim possibilitar que o administrador aprove ou no o registro.

    4. Mudar a pgina index para que sejam listados somente os registros aprovados, ouseja, os que possuem o nmero 1 na coluna aprovao.

    Para essa nova misso vamos chamar ele, o nosso querido, sbio e amvel guru, TioBruno Tiburcio. com voc!

    Listando apenas os aprovados no index.php

    A ltima modificao que voc dever fazer no index.php para que ele possa listarapenas os aprovados pelo moderador. Para isso necessrio passar um comando para obanco de dados dizendo que deseja que apenas os que possuem valor 1 na colunaaprovacao apaream na lista.

    Substitua essa linha:consulta = "SELECT * FROM pescaria ORDER BY peso DESC, data ASC";

    Por essa linha:$consulta = "SELECT * FROM pescaria WHERE aprovacao = 1 ORDER BY pesoDESC, data ASC";

    No comando estou dizendo:

    "Selecionar tudo em pescaria onde o valor da coluna aprovacao seja 1, ordenando porpeso em lista decrescente e data por lista ascendente."

    Agora s testar e partir pra galera!

    Arquivos dessa aula?

  • 7/22/2019 Apostila PHP.docx

    62/93

    O desejo do seu querido professor que voc assista as aulas e tente fazer as alteraesnos arquivos da aula 08, incluindo a autenticao e moderao conforme mostrado naaula 09. Na prxima aula irei disponibilizar os arquivos para que voc possa compararcom o seu cdigo e assim ficar todo serelepe. ;)

    E piriri e poror!

    Login e Senha Criptografada

    Criando uma rede social de freguesas de Astrogildo

    L vem de novo Astr com suas idias mirabolantes. Empolgado com as vendas de suacoleo de inverno, Astrogildo resolveu investir no que h de mais moderno emtcnicas de fidelizao de clientes.

    Utilizando a filosofia de Silvio Santos que encara suas freguesas como colegas detrabalho, Astrogildo teve a idia de juntar as freguesas em uma comunidade prpria,

    para que possam se conhecer, fofocar e assim ajud-lo a vender mais.

    Para isso Astrogildo me enviou um Fax (, em Kodiak no tem MSN mas ainda tem Faxe telex) com o rascunho do que ele queria, veja s:

    L vem de novo Astr com suas idias mirabolantes. Empolgado com as vendas de suacoleo de inverno, Astrogildo resolveu investir no que h de mais moderno emtcnicas de fidelizao de clientes.

    Utilizando a filosofia de Silvio Santos que encara suas freguesas como colegas detrabalho, Astrogildo teve a idia de juntar as freguesas em uma comunidade prpria,

    para que possam se conhecer, fofocar e assim ajud-lo a vender mais.

    Para isso Astrogildo me enviou um Fax (, em Kodiak no tem MSN mas ainda tem Faxe telex) com o rascunho do que ele queria, veja s:

  • 7/22/2019 Apostila PHP.docx

    63/93

    T vendo a, o que precisamos algo que lembre um pouco, de longe, um orkut da vida.Pessoas acessam o site, se cadastram e esse cadastro aparece para todos os cadastrados,acompanhado de uma fotinha. Clicando em cada fotinha e nome temos o perfil docadastrado.

    A idia que cada freguesa possa incluir e editar seu prprio cadastro, criando inclusive

  • 7/22/2019 Apostila PHP.docx

    64/93

    seu login e senha.

    Assim que vi esse desafio pensei em vocs nobres alunos. Seria uma timaoportunidade de ensinar mais sobre logins e cadastros. E ento, topa esse desafio?

    Criando logins para cada usurio

    Se voc est aqui porqu topou o desafio, no foi? Ento vamos nessa, planejandoprimeiro a criao do nosso sistema de login. Na aula passada criamos uma rea comlogin e senha porm era um cadastro s, o do administrador, que colocvamos direto noPHP, sem precisar armazenar num banco de dados. Mas como faremos com que cadausurio possa registrar seu login e senha sem nosso intermdio, gravando no banco dedados? isso que faremos agora.

    Teremos que cumprir trs etapas.

    1. Incluir os campos login e senha na tabela freguesas

    2. Criar um novo script de login

    3. Conectar o sistema de login ao restante da aplicao.

    Download do Banco de Dados e Arquivos - Parte IO seu professor est bonzinho hoje. Resolveu disponibilizar alguns arquivos parafacilitar sua vida. Afinal voc no tem mais nada a aprender com eles pois japrendemos nas aulas passadas, ento praqu repetir o que fazer? Porm vamos ter quefazer muitas mudanas nesses arquivos para que fique tudo direitinho como a gente,alis, como o Astrogildo quer.

    Portanto estou disponibilizando os arquivos, bastaclicar aqui.Voc ir encontrarum arquivo SQL com nossa tabela inicial, o index.php, editarperfil, verperfil, conexao e

    path.php.

    Depois de descompactar o arquivo, importe o SQL para o seu banco de dados ealtere oarquivo conexao.php com os dados do seu banco de dados.

    Abra o index.php no seu localhost e veja se aparece uma listinha como essa:

    http://alunos.brunoavila.com.br/php/exercicios/aula10-cursophpparawebdesigners-01.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula10-cursophpparawebdesigners-01.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula10-cursophpparawebdesigners-01.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula10-cursophpparawebdesigners-01.zip
  • 7/22/2019 Apostila PHP.docx

    65/93

    Enquanto isso, vai clicando em "prximo" logo ai embaixo, no cantinho.

    Download do Banco de Dados e Arquivos - Parte II

    Como estava dizendo, no sistema da aula passada aprendemos a colocar login e senhana nossa administrao. Mas aquilo foi uma maneira rpida e rstica de resolvermos o

    problema do Astrogildo. O legal mesmo seria se pudessemos incluir novos usurios eque tudo ficasse gravado no banco de dados. Pois isso que vamos aprender agora no

    primeiro videozito de hoje do professor Bruno. Tio Bruno, com voc!

    video

    Novo SQL e Download do Arquivo de Login

    Aqui esto os arquivos que citei no vdeo acima. Este download contm nosso segundoSQL, onde voc deve remover o primeira tabela que criamos e importar essa que estoudisponibilizando agora, e tambm o arquivo login.php juntamente com os arquivosalterados pois o professor aqui ficou com pena de vocs terem que digitar tanto. :)Clique aqui para fazer o segundo download

    Usurio cadastrando ele mesmo!

    http://alunos.brunoavila.com.br/php/exercicios/aula10-cursophpparawebdesigners-02.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula10-cursophpparawebdesigners-02.zip
  • 7/22/2019 Apostila PHP.docx

    66/93

    Precisamos agora criar uma janelinha que permita novas freguesas a se cadastrarem narede social de freguesas do Astr. Penso em um formulrio que tenha apenas 3 campos,um de login e os outros dois campos para a senha e checagem de senha, onde a freguesacolocar novamente sua senha para ver se est ok.

    Colocando esses dados e clicando em assinar, o script deve acessar o banco de dados echecar se o login j est sendo utilizado por outra pessoa. Se j existir, deve ser exibidouma mensagem de erro. Se no existir, ento a gravao do registro realizada.

    Com o registro gravado, a freguesa acessar o sistema e a sim completar os dados doregistro, clicando em editar perfil.

    Como faremos isso? Tio Bruno vai dizer pra gente! Ento senta, senta que l vem ahistria!

    Video

    Arquivos finais da aula

    Aqui esto os arquivos dessa aula, com tudo que foi mostrado e o resultado final.Clique aqui para fazer o download de todos os arquivos dessa aula.

    Arquivos da aula 09Aqui esto os arquivos da aula09. Ainda teremos o bnus track onde falaremos sobreSQL Injection. Aguarde!Clique aqui para fazer o download dos arquivos da aula 09.

    Desafio do Tio Ronaldo

    http://alunos.brunoavila.com.br/php/exercicios/aula10-cursophpparawebdesigners-03.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula10-cursophpparawebdesigners-03.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula09-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula09-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula09-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula10-cursophpparawebdesigners-03.zip
  • 7/22/2019 Apostila PHP.docx

    67/93

    "Chega de ursinho chega de elefantinho, o negcio agora ficou feio pro seu lado!Apresento agora o Cambuquirio, o mascote bizarro do tio Ronaldo.

    Ele est se sentindo meio triste porqu muita gente acha ele feio e com um nome muitoestranho. Por isso tente deix-lo mais feliz fazendo um mural de recados! Olha, no seesquea que ele vai precisar administrar os recados pois creio que muita gente maldosavai postar mensagens indelicadas e deix-lo um pouco triste.

    Bora l ento?

    Fiz um briefing juntamente com Cambuquirio para que voc possa acertar no sistema econseguir deixar este cliente mais feliz.

    Ento queridos alunos, sigam-me os bons! (clicando em prximo!)

    Briefing

    Mural de recados com rea de administrao restrita para excluir os recadosindesejveis.

    Investimento:$B 750,00 (Setecentos e cinquenta Billis).

  • 7/22/2019 Apostila PHP.docx

    68/93

    Prazo de entrega:5 Dias

  • 7/22/2019 Apostila PHP.docx

    69/93

    Dicas

    A aula sobre o concurso de pescaria foi bacana para aprender a fazer listagens decontedo do Banco de Dados, que tal dar uma olhadinha lah?

    Nas aulas 8 a 10 tambm aprendemos sobre segurana com PHP, vamo precisar usaralguns passos para fazer autenticao no admin.

    Veja um exemplo da utilizao do PHP com um HTML mais bonitinho. Tente seguir omesmo layout sugerido no exemplo abaixo:Link do Muralhttp://4twts.com/mural/index.phpLink do Adminhttp://4twts.com/mural/admin.php

    Campos necessrios para o Banco de Dados:id, nome, email, mensagem, data

    Agora com voc! Faa o exerccio, tenho certeza que voc capaz. Qualquer dvidaposte em nosso frum. Na prxima aula iremos disponibilizar aqui os arquivos dessesistema para que voc possa comparar com o seu, ok?

    Meus melhores cumprimentos,

    ___________________________Tio Ronaldo

    Cookies e Sesses

    Na ltima aula aprendemos a criar uma pgina de cadastro de usurio com login esenha, ainda mais criptografado. Realmente um luxo! Mas hoje percebemos que essesistema pode tomar corpo, ficar maior, com mais pginas e assim a autenticao http serinsuficiente. Isso porqu o servidor web v cada solicitao de pgina sem o contexto deoutras requisies e por isso no pode lembrar os dados entre as requisies.

    Alm disso toda hora as freguesas de Astrogildo tero que ficar colocando senha e loginpor diversas vezes, quando o navegador pedir.

    Precisamos de uma forma de manter o login e senha acionado entre as pginas atmesmo quando saimos por alguns minutos do site e voltamos logo depois.

    http://4twts.com/mural/index.phphttp://4twts.com/mural/index.phphttp://4twts.com/mural/admin.phphttp://4twts.com/mural/admin.phphttp://4twts.com/mural/admin.phphttp://4twts.com/mural/index.php
  • 7/22/2019 Apostila PHP.docx

    70/93

    Como eu sou um resolvedor de problemas, c estou com a soluo. Tenho duas figuraspara apresentar para vocs, primeiro conheam o cookie!

    Analisando um Cookie

    Com esse rapaz a voc pode rastrear certos detalhes de usurios, como o nmero devisitas, nomes, datas, etc. Cookie nada mais do que um pequeno arquivo de dados que

    pode ter no mximo 4kb. Esse pequeno arquivo enviado para o navegador do usurioe fica gravado no seu computador. Assim possvel passar informaes entre as pginasdo site sem necessidade de sempre fazer uma requisio ao servidor.

  • 7/22/2019 Apostila PHP.docx

    71/93

  • 7/22/2019 Apostila PHP.docx

    72/93

    Cookies gotas crocantes de PHP

    O PHP nos fornece acesso aos cookies atravs de uma funo chamada setcookie () e um

    superglobal chamado $ _COOKIE. A funo setcookie () usada para criar o cookie, definindoo

    valor e data de vencimento de um cookie e o superglobal $ _COOKIE usado para recuperar o

    valor de um cookie.

    O poder do uso do cookie que seus dados persistem em vrios scripts, para quepossamos lembrar o nome de usurio sem a necessidade de efetuar login novamentesempre que passar de uma pgina para outra dentro do mesmo site. Mas no se esquea,tambm precisamos de arrumar o ID do usurio em um cookie, pois serve como umachave primria para consultas de banco de dados.

    A funo setcookie () tambm aceita um terceiro argumento opcional que define a datade expirao do cookie, que a data em que o cookie automaticamente eliminado. Sevoc no especificar uma expirao, como no exemplo acima, o cookie expiraautomaticamente quando onavegador for fechado.

    Com Cookies, o Login muda

  • 7/22/2019 Apostila PHP.docx

    73/93

    Se utilizarmos os cookies para potencializar nosso script de login, precisaremos ,ud-lo para

    receber essas novas mudanas. O plano o seguinte:

  • 7/22/2019 Apostila PHP.docx

    74/93

    Pelo que voc viu teremos que fazer algumas mudanas e tambm criar um novo arquivo, o

    logout.php. Para isso Tio Bruno entra em ao em nosso primeiro vdeo de hoje. com voc

    fess!

    video

    Autenticando atravs de sesses

    Ser que no existe uma forma de fazer a autenticao mas gravando os dados no servidor ao

    invs do navegador?

    Sim, atravs de sesses! Eles so equivalentes aos cookies, gravando temporariamente osdados de login e continua l podendo ser acessado pelo script e assim evitando ter que se

    logar repetidamente.

    Alm disso, permitem que sejam armazenados qualquer tipo de informao, assim como

    arrays e certos tipos de resources. Outra coisa bacana das sesses que valores podem ser

    alterados mesmo depois do envio do HTML. possvel at agrupar sesses e grav-las com

    outros nomes carregando grupos diferentes de acordo com a necessidade.

    Mas claro, existe um problema em utilizar a sesso que em alguns casos se faz preferir o

    cookie. Sim, existe. Na sesso no tenho o controle de tempo de expirao como nos cookies.

    Na sesso basta fechar o navegador que a sesso se perde e ento necessrio logar de novo.

    Iniciando uma sesso

    Para iniciar uma sesso basta chamar pela funo session_start(). J para forar o trmino de

    uma sesso basta utilizar o session_destroy().

    O melhor mesmo ensinar como a sesso funciona na prtica. Vamos ver isso na companhia

    do nosso querido professor Bruno, com voc!

    video

    Arquivos finais da aula

    Aqui esto os arquivos dessa aula, com tudo que foi mostrado e o resultado final.Clique aqui para fazer o download de todos os arquivos dessa aula.

    http://alunos.brunoavila.com.br/php/exercicios/aula12-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula12-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula12-cursophpparawebdesigners.zip
  • 7/22/2019 Apostila PHP.docx

    75/93

    Soluo - Exerccio do Tio Ronaldo

    Quer comparar os seus arquivos com o ltimo exerccio do Tio Ronaldo?Clique aqui para fazer o download de todos os arquivos desse exerccio.

    Como fazer um sistema de busca

    Estamos de volta trazendo, claro, mais uma idia mirabolante de nosso querido Astrogildo. O

    webdesigner camarada mandou email dizendo o quanto suas lojas Astr Fashion Bear estavam

    fazendo sucesso. A procura era to grande que resolveu colocar em prtica um novo objetivo:

    abrir uma nova filial de sua loja.

    Porm para abrir uma nova loja necessrio funcionrios. E nas Ilhas Kodiak, diferente do

    Brasil, emprego no falta. L a realidade contrria a nossa, sobra emprego e falta gente

    desempregada! V se pode!

    Ento o jeito foi fazer um intercmbio entre Ilhas Kodiak e Brasil afim de achar pessoas

    dispostas a trabalhar em Kodiak, mais precisamente em sua loja.

    Para isso Astrogildo coletou currculos de brasileiros durante alguns dias e o que mais

    surpreendeu foi que ele nem anunciou no site essa abertura de vagase j tinha gentemandando currculo. Temendo o sucesso estrondoso que esse convite de emprego far no

    Brasil, Astrogildo me mandou email dando a seguinte idia:

    http://alunos.brunoavila.com.br/php/exercicios/exercicio-tioronaldo-phpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/exercicio-tioronaldo-phpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/exercicio-tioronaldo-phpparawebdesigners.zip
  • 7/22/2019 Apostila PHP.docx

    76/93

    Prepare-se para muitas funes!

  • 7/22/2019 Apostila PHP.docx

    77/93

    A idia parece simples, um script que possibilite buscar palavras-chave dentro docampo escolhido. Astrogildo poder buscar por cargo, descrio ou estado. Alm dissoser exibido 5 resultados por pgina e bastar um arquivo para que essa busca funcione.

    Para isso iremos aprender algumas coisinhas novas. Na realidade iremos trazer diversas

    funes que juntas iro buscar as respectivas palavras-chave pelo banco de dadosminicurriculo.

    Nesse script no podemos deixar nenhuma margem de erro. Imagino que voc deveestar pensando logo de cara "Hum, basta colocar um SELECT nesse script pra buscar a

    palavra desejada.

    Por exemplo:

    SELECT cargo, descricao, cidade FROM minicurriculo WHERE cargo = engenheiro

    Temos um problema nesse SELECT. Ele mora no sinalzinho de igual. Lembre-se que ocampo de busca aberto, o usurio entra l e coloca qualquer palavra-chave, encanador,

    bombeiro, balconista, o que der na telha. Portanto devemos levar isso em considerao.Que tal colocarmos algo como...

    SELECT cargo, descricao, cidade FROM minicurriculo WHERE cargo LIKE'%engenheiro%'

    Acredito que esse LIKE seja novidade pra voc. Esse rapaz faz uma busca maisespecfica entre as frases gravadas no MySQL ao ponto de encontrar no s a palavrainteira mas tambm a metade dela. Por exemplo, digamos que ao invs de procurar"engenheiro" procure por "engenh". O resultado seria todas as palavras que tivessem"engenh" no seu nome. Seria mostrado algo como:

    EngenheiroEngenhariaEngenhoEngenhoca

    Para que isso ocorra necessrio que a palavra esteja entre % aps o comando LIKE.

    Bora explodir esse negcio?

    Alm da funo LIKE do MySQL, precisamos aprender outras funes de PHP para

    conseguirmos criar o sistema de busca. Uma delas apresento a vocs: o explode().

    Esse nome tem tudo a ver com sua funo. Pense comigo: antes de uma granada explodir ela

    toda uniforme, uma nica coisa, nada mais do que um objeto chamado granada.

    Porm, quando a granada explode, vai caquinho de granada pra todo lado. Aquele objetonico chamado granada acaba se tornando dezenas de caquinhos de uma granada.

  • 7/22/2019 Apostila PHP.docx

    78/93

    A funo explode() faz a granada explodir, ou seja, pega um string e corta ele empedacinhos, dividindo uma string em vrias strings.

    Por exemplo:

    //STRING$cidades = "So Paulo, Rio de Janeiro, Belo Horizonte, Braslia, Fortaleza";

    //TRANSFORMANDO A STRING EM VRIAS STRINGS$resultado = explode ( ' , ', $cidades);

    //FINALfor ($i=0; $iecho "Cidade $i: ".$resultado[$i]."";}

    Se voc der uma olhadela rpida logo ir perceber o que fiz.

    Primeiro mostrei a string com as cidades, sendo o primeiro item a cidade de So Paulo epor ltimo Fortaleza.

    Depois mandei "explodir" essa string, dizendo que cada item da string $cidades estdividida por vrgula. Assim explode vai separar cada item que encontrar aps cada

    vrgula.

  • 7/22/2019 Apostila PHP.docx

    79/93

    Em resultado vemos o comando "For" que utilizamos quando queremos executar umconjunto de instrues num determinado nmero de vezes. Afinal a string foi divididaem vrios pedaos e precisamos imprimir isso na tela, um por um. O for necessrio

    para que ele repita o mesmo comando at a ltima string.

    Portanto digo que "for" vai inicializar do zero ($i=0). Ser mostrado na tela (echo) acidade acompanhado do $i resultando em $resultado[sua posio]. Vimos que $icomea do zero e vai somando at o ltimo string. Portanto temos as cidades cuja

    posies esto entre 0 a 4 listadas uma a uma.

    Cidade 0: So PauloCidade 1: Rio de JaneiroCidade 2: Belo HorizonteCidade 3: BrasliaCidade 4: Fortaleza

    A funo explode ser muito til em nossa busca. Afinal ser gerado um resultado comdiversas palavras-chave que dever ser dividido e listado. Logo mais veremos isso emfuncionamento. ;)

    Descobrindo novas funes na prtica

    O problema da maioria dos livros de PHP que eles no mostram as funes sendo aplicadas

    na prtica. Mostram exemplos, mas nada mais do que isso. J ns, alunos do curso PHP para

    Web Designers vamos aprender novas funes vendo esse treco funcionando. assim queaprendemos pra valer! Por isso Tio Bruno vai mostrar, numa tacada s, uma srie de funes

    importantes do PHP a partir do desenvolvimento do nosso sistema de busca de currculos.

    Ser apenas um script, mas altamente poderoso. Querem ver? Ento senta, senta que l vem a

    histria!

    video

    Arquivos finais da aulaAqui esto os arquivos dessa aula, com tudo que foi mostrado e o resultado final. Alm disso

    voc ir encontrar o minicurriculo.sql, bastando importar para seu banco de dados.Clique aqui

    para fazer o download de todos os arquivos dessa aula.

    Referncias

    http://alunos.brunoavila.com.br/php/exercicios/aula13-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula13-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula13-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula13-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula13-cursophpparawebdesigners.ziphttp://alunos.brunoavila.com.br/php/exercicios/aula13-cursophpparawebdesigners.zip
  • 7/22/2019 Apostila PHP.docx

    80/93

    Se voc no tem um livro de PHP o acompanhando nessa jornada, conhea outrasopes na internet para consultar todas as funes utilizadas no PHP. Uma delas o

    prprio manual oficial do PHP, que est disponvel na ntegra e gratuitamente nainternet, porm com aquela linguagem que s quem tirava 10 em matemtica no colgioentende. Mas algumas partes do manual pode lhe ajudar como referncia. No link

    abaixo voc ir encontrar todas as funes, variveis, operadores, classes, condicionais,sintaxes e tudo mais que foi citado nessa aula e centenas de outras mais que voc poderutilizar.

    Clique aqui para visualizar as referncias do PHP do seu manual oficial

    Como validar campos de um formulrioMeus queridos alunos, estamos de volta com mais uma aulinha divertida de Tio Bruno. Hoje

    vamos fazer uma coisinha que deixamos de fazer na aula passada, o cadastro de currculos!

    Formulrio de cadastro gravando no banco de dados todo mundo aqui deve saber fazer no

    mesmo? Mas validando campos utilizando expresses regulares? R, te peguei!

    Precisamos validar os campos da seguinte forma:

    1. Os campos nome, cidade, estado e descrio devem ser preenchidos.2. O campo cep deve conter nmeros

    3. O campo telefone deve conter nmeros e seguir uma regra de montagem

    (Ex: (011) 8888-8888)

    4. O campo email deve ser preenchidos com um email vlido, checando se o domnio tambm

    vlido.

    A validao de