Your SlideShare is downloading. ×
0
PHP: Programação
para Seres Humanos

      Carlos Henrique R. de Souza
      XX.Sepai.Belém.PA
      Outubro de 2006
Agenda
    Objetivo


    Paradigmas


    A Web


    O que é PHP / PHP­CLI / PHP­GTK


    Características / Fatos
...
Objetivo

    Desenvolvimento em PHP


        Iniciantes em PHP
    

        Iniciantes em outras linguagens
    

  ...
Paradigmas

    Client­Side 


        Vantagens:
    

            Alicerce robusto
        

            Controle sob...
Paradigmas

    Server­Side

Paradigmas

    Server­Side 


        Vantagens:
    

            Interface pré­modelada
        

            Maior ...
A Web
       Total Sites Across All Domains August 1995 ­ October 2006 




     Em novembro de 1992 – 26 servidores web  ...
O que é PHP ?
    Uma linguagem de programação open­


    source e de propósitos­gerais
    Criada por Rasmus Lerdof em ...
O que é PHP ?

    arquivo.php (no servidor)



    <html>
      <p><b><? echo “Olá, Mundo!” ?></b></p>
    </html>


   ...
O que é PHP ?

    PHP­CLI


        Command Line Interpreter
    

        Uso similar a bash, perl, awk
    

       ...
O que é PHP ?

    PHP­GTK


        Gimp Tool Kit
    

            Bibliotecas escritas em C
        


        Clien...
Características

    Independente de Plataforma


        Linux, HP­UX, Mac OS X, Win32 (NT/W95/W98/W2000), 
    

     ...
Características

    Extensões:


        GD (imagens), LDAP, SNMP, SOAP, IMAP, FTP, 
    

        MCAL, IMSP, Java, Cu...
Características

    Tipagem dinâmica (‘duck’ typing) e 


    conversão automática
         If ( funcao_foo($arg_foo) ) ...
Características
    Integração com outras linguagens


         (Java, Perl, MS.net , etc.)
    

         public class ...
Características

 Sintaxe simples, semelhante a Perl e C


Perl:
$conn = Pg::connectdb(quot;dbname=foo host=localhost use...
Características

    Arrays


        Ordenados
    

        <?  $vetor[0] = “primeiro”;
            $vetor[1] = “segun...
Fatos




     19.491.324 Domains
 

     1.313.977 IP Addresses
                             fonte: netcraft
Fatos

“Top 10 Programming Languages”




                  fonte: tiobe
Fatos




        fonte: nexen
Primeiros Passos

    Opção 1: LAMP


        Linux com APT­GET
    

            apt­get install apache2 php5 mysql­ser...
IDEs

    Open­Source:


        Eclipse (PHPEclipse, PHP­IDE), Tulip, 
    

        PHPDesigner
    Proprietárias:


...
Orientação a Objetos

    Inspiraçao no mundo real


    Introduzida no PHP 3


    Reescrita para o PHP 4, mas ainda 
...
Orientação a Objetos

    construtores e destrutores padrão



class BD{
    var $conn;
    function __construct($host, $...
Orientação a Objetos

    modificadores de acesso


        public
    

        private
    

        protected
    
...
Orientação a Objetos

    __set(), __get(), __call()


class Pessoa {

  private $dt_nascimento;

  function __set($atrib...
Orientação a Objetos

    __set(), __get(), __call()


class Conta {

  private $saldo;
  private $limite = 100;

  funct...
Orientação a Objetos

    __set(), __get(), __call()


class Guitarra {

  private $cordas;
  private $captadores;

  fun...
Orientação a Objetos

    interfaces



          interface IPessoa{

              function fazerObrigacoes();
         ...
Orientação a Objetos

    interfaces


    class Garoto implements IPessoa{

        private $obrigacoes = false;

      ...
Orientação a Objetos

    interfaces


    class Adulto implements IPessoa{

        private $obrigacoes = false;

      ...
Orientação a Objetos

    interfaces


     class Deus{

         function julgar(IPessoa $p){

             if(!$p­>getO...
Orientação a Objetos

    interfaces


     $objPessoa1 = new Garoto();
     Deus::julgar($objPessoa);

     Fazer meu de...
Orientação a Objetos

    classes e métodos abstratos


    propriedades estáticas


    clonagem


    manipulação de ...
Frameworks

    Genial, ClassGenerator, MetaClass, Smarty, 


    PRADO, CakePHP, Symfony, etc.
    “ Não reinvente a rod...
Content Management System
(CMS)
    Portais:


        Joomla, Mambo, PHP­Nuke, etc ...
    


    Blogs:


        Wor...
Segurança

    SQLInjection


    XSS


    Engenharia Social 

SQL Injection

    Manipulação dos scripts SQL



$sql= “... WHERE nome = `$_POST[`nome`]` AND senha = ‘$_POST[`senha`]`”...
SQL Injection

    Ajudam a evitar ataques de SQLInjection:


        addslashes
    

        mysql_real_escape_string
...
Cross-Site Scripting (XSS)

    Informação de um contexto (não­confiável) é inserida 


    em outro contexto
    Link em...
Cross-Site Scripting (XSS)

    Ajudam a evitar ataques de XSS


        strip_tags
    

        htmlentities
    



...
Engenharia Social

    Independente de tecnologia


    Caso Paris Hilton


    Caso Harvard Business School


    “ Nã...
Conclusões

    PHP – programação para seres­humanos e 


    situações humanas no planeta Terra !

    “ Quando tudo que...
Fim
    Referências


        www.php.net
    

        www.netcraft.com
    

        www.opensourcecms.com
    

   ...
Upcoming SlideShare
Loading in...5
×

PHP - Programação para seres humanos

1,566

Published on

Uma introdução ao PHP.

An introductory presentation about the PHP language and platform.

Published in: Technology
1 Comment
2 Likes
Statistics
Notes
No Downloads
Views
Total Views
1,566
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
91
Comments
1
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "PHP - Programação para seres humanos"

  1. 1. PHP: Programação para Seres Humanos Carlos Henrique R. de Souza XX.Sepai.Belém.PA Outubro de 2006
  2. 2. Agenda Objetivo  Paradigmas  A Web  O que é PHP / PHP­CLI / PHP­GTK  Características / Fatos  Primeiros passos  IDE   Orientação a Objetos  Frameworks  CMS  Segurança  Conclusões 
  3. 3. Objetivo Desenvolvimento em PHP  Iniciantes em PHP  Iniciantes em outras linguagens  Alunos de cursos técnicos  / graduaçao em TI  Entusiastas  Quando usá­lo  Quando não usá­lo  
  4. 4. Paradigmas Client­Side   Vantagens:  Alicerce robusto  Controle sobre os recursos  Liberdade local  Desvantagens:  Desenvolvimento ‘do zero’  Liberdade local  Bugfix 
  5. 5. Paradigmas Server­Side 
  6. 6. Paradigmas Server­Side   Vantagens:  Interface pré­modelada  Maior acessibilidade  Bugfix  Desvantagens:  Pouca (quase nenhuma) informação sobre cliente  Preocupação com tráfego  Popularização no desenvolvimento de aplicações 
  7. 7. A Web Total Sites Across All Domains August 1995 ­ October 2006  Em novembro de 1992 – 26 servidores web fonte: netcraft  Em outubro de 2006 – 98 milhões de ‘hostnames’  “A internet náo é uma rede de computadores, mas sim de pessoas”
  8. 8. O que é PHP ? Uma linguagem de programação open­  source e de propósitos­gerais Criada por Rasmus Lerdof em 1995 (PHP/FI)  Reescrita por Andi Gtmans e Zeev Suraszi   (Zend) em 1997 – PHP3 Utilizada especialmente para   desenvolvimento web (procedural e/ou OO) Misturada com HTML  TODO código PHP é interpretado no servidor 
  9. 9. O que é PHP ? arquivo.php (no servidor)  <html> <p><b><? echo “Olá, Mundo!” ?></b></p> </html> arquivo.php (no cliente)  <html> <p><b>Olá, Mundo!</b></p> </html>
  10. 10. O que é PHP ? PHP­CLI  Command Line Interpreter  Uso similar a bash, perl, awk  Client­Side  Cron tasks  #!/usr/bin/php –q <? echo “PHP aqui também!”; ?>
  11. 11. O que é PHP ? PHP­GTK  Gimp Tool Kit  Bibliotecas escritas em C  Client/Server­Side  Cross­platform 
  12. 12. Características Independente de Plataforma  Linux, HP­UX, Mac OS X, Win32 (NT/W95/W98/W2000),   BeOS, Solaris Servidores  Apache, MS­IIS / PWS, Xitami  Suporte nativo a diversos SGBDs  Adabas D, dBase, Empress, FilePro (apenas leitura),   Hyperware, IBM DB2, Informix, Ingres, Interbase,  FrontBase, mSQL, Direct MS­SQL, MySQL, ODBC, Oracle  (OCI7 e OCI8), Ovrimos, PostgreSQL, SQLite, Solid,  Sybase, Velocis, Unix dbm
  13. 13. Características Extensões:  GD (imagens), LDAP, SNMP, SOAP, IMAP, FTP,   MCAL, IMSP, Java, Curl, gettext, SWF, CCVS,  zlib, etc...
  14. 14. Características Tipagem dinâmica (‘duck’ typing) e   conversão automática If ( funcao_foo($arg_foo) ) { ... fazer algo ... } Funções suficientes! tipo int ou String 
  15. 15. Características Integração com outras linguagens  (Java, Perl, MS.net , etc.)  public class JavaPHP {     private String nome = null;     public void setNome(String nome) {         this.nome = nome;     }     public String getNome() {         return nome;     } } <? $javaPHP = new Java('JavaPHP'); $javaPHP->setNome(quot;Java+PHPquot;); echo quot;Método do Java = quot; . $javaPHP->getNome(); ?> ex: PHPBrasil
  16. 16. Características Sintaxe simples, semelhante a Perl e C  Perl: $conn = Pg::connectdb(quot;dbname=foo host=localhost user=root password=123quot;); PHP: $conn = pg_connect(quot;host=localhost dbname=foo user=root password=123quot;) Otimizadores  APC, Zend Optimizer, Turck MMCache 
  17. 17. Características Arrays  Ordenados  <?  $vetor[0] = “primeiro”; $vetor[1] = “segundo”; $vetor[] = “terceiro”;  ?> Associativos  <?  $vetor[‘caike’] = “php”; $vetor[‘jamesgoslin’] = “java”; $vetor[‘joselito’] = “asp”;  ?> 48 funções para array 
  18. 18. Fatos 19.491.324 Domains  1.313.977 IP Addresses  fonte: netcraft
  19. 19. Fatos “Top 10 Programming Languages” fonte: tiobe
  20. 20. Fatos fonte: nexen
  21. 21. Primeiros Passos Opção 1: LAMP  Linux com APT­GET  apt­get install apache2 php5 mysql­server php5­mysql   mysql­query­browser Compilações e instalações independentes  Opção 2: WAMP  EasyPHP (7.7mb)  Instalações independentes 
  22. 22. IDEs Open­Source:  Eclipse (PHPEclipse, PHP­IDE), Tulip,   PHPDesigner Proprietárias:  Zend Studio, Dreamweaver 
  23. 23. Orientação a Objetos Inspiraçao no mundo real  Introduzida no PHP 3  Reescrita para o PHP 4, mas ainda   insuficiente PHP5 = OO madura e similar a outras   linguagens
  24. 24. Orientação a Objetos construtores e destrutores padrão  class BD{ var $conn; function __construct($host, $user, $pw){ $this­>conn = mysql_connect($host,$user,$pw); } function __destruct($host, $user, $pass){ mysql_close($this­>conn) ; } }
  25. 25. Orientação a Objetos modificadores de acesso  public  private  protected  class Funcionario {  public $nome; protected $telefone; private $salario; } 
  26. 26. Orientação a Objetos __set(), __get(), __call()  class Pessoa {   private $dt_nascimento;   function __set($atributo, $valor){     if($atributo == quot;dt_nascimentoquot;){    $dt_nascimento = implode(quot;­quot;,array_reverse(explode(quot;/quot;,$valor))); }     } } $p1 = new Pessoa(); $p1­>dt_nascimento = quot;03/09/1984quot;; // ... dt_nascimento = 1984­09­03
  27. 27. Orientação a Objetos __set(), __get(), __call()  class Conta {   private $saldo;   private $limite = 100;   function setSaldo() ...   function __get($at){    if($at == “saldo”) return $this­>saldo + $this­>limite;   } } $p1 = new Conta(); $p1­>setSaldo(200); echo $p1­>saldo; // 300
  28. 28. Orientação a Objetos __set(), __get(), __call()  class Guitarra {   private $cordas;   private $captadores;   function __call($metodo, $args){    echo quot;@#&!! $metodo não existe para a classe guitarra !quot;;   } } $a = new Guitarra(); $a­>tocarUmPagodao();
  29. 29. Orientação a Objetos interfaces  interface IPessoa{ function fazerObrigacoes(); function seDivertir(); }
  30. 30. Orientação a Objetos interfaces  class Garoto implements IPessoa{ private $obrigacoes = false; function fazerObrigacoes(){ echo “Fazer meu dever de casa”; $this­>obrigacoes = true; } function seDivertir(){ echo “Jogar playstation”; } function getObrigacoes(){ return $this­>obrigacoes; } }
  31. 31. Orientação a Objetos interfaces  class Adulto implements IPessoa{ private $obrigacoes = false; function fazerObrigacoes(){ echo “Trabalhar para pagar o PS do meu filho”;  $this­>obrigacoes = true; } function seDivertir(){ echo “Verei o Papão jogar!”; } function getObrigacoes(){ return $this­>obrigacoes; } }
  32. 32. Orientação a Objetos interfaces  class Deus{ function julgar(IPessoa $p){ if(!$p­>getObrigacoes()){ echo “Faça já suas obrigações!”; $p­>fazerObrigacoes(); } $p­>setDivertir(); } }
  33. 33. Orientação a Objetos interfaces  $objPessoa1 = new Garoto(); Deus::julgar($objPessoa); Fazer meu dever de casa Jogar playstation $objPessoa2 = new Adulto(); Deus::julgar($objPessoa2); Trabalhar para pagar o PS do meu filho Verei o Papão jogar
  34. 34. Orientação a Objetos classes e métodos abstratos  propriedades estáticas  clonagem  manipulação de erros (try/catch) 
  35. 35. Frameworks Genial, ClassGenerator, MetaClass, Smarty,   PRADO, CakePHP, Symfony, etc. “ Não reinvente a roda, mas saiba como ela   foi feita ”
  36. 36. Content Management System (CMS) Portais:  Joomla, Mambo, PHP­Nuke, etc ...  Blogs:  Wordpress, simplog  eCommerce:  phpShop, XT­Commerce  GroupWare:  NetOffice, PHPGroupWare 
  37. 37. Segurança SQLInjection  XSS  Engenharia Social  
  38. 38. SQL Injection Manipulação dos scripts SQL  $sql= “... WHERE nome = `$_POST[`nome`]` AND senha = ‘$_POST[`senha`]`”; Login: bla’ or 1 = 1 – Senha: 123 $sql =  “... WHERE nome = ‘bla’ or 1 =1 ­­ ` AND senha = ‘123`”; Sempre validar entrada, SEMPRE! 
  39. 39. SQL Injection Ajudam a evitar ataques de SQLInjection:  addslashes  mysql_real_escape_string  magic_quotes 
  40. 40. Cross-Site Scripting (XSS) Informação de um contexto (não­confiável) é inserida   em outro contexto Link em um e­mail: Fotos daquela sua amiga na festa  <a href =  quot;http://xpto.com/?param=<script>...</script>”> Fotos daquela sua amiga na festa </a> <a href = “http://tinyurl.com/y6tz8”> Fotos daquela sua amiga na festa </a>
  41. 41. Cross-Site Scripting (XSS) Ajudam a evitar ataques de XSS  strip_tags  htmlentities  Sempre validar entrada e SAÍDA! 
  42. 42. Engenharia Social Independente de tecnologia  Caso Paris Hilton  Caso Harvard Business School  “ Não existe patch para falha humana...” 
  43. 43. Conclusões PHP – programação para seres­humanos e   situações humanas no planeta Terra ! “ Quando tudo que se tem é um martelo... ” 
  44. 44. Fim Referências  www.php.net  www.netcraft.com  www.opensourcecms.com  www.nexen.net  www.tiobe.com  http://ref.web.cern.ch/ref/CERN/CNL/2001/001/www­history/  Contato  carloshrsouza@equilibriumweb.com  www.equilibriumweb.com  www.step2rock.com  Grupo  phppaidegua­subscribe@yahoogroups.com 
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×