2. Introdução
o ambiente de desenvolvimento open-source
• Máquina Virtual (virtualbox)
• Sistema operativo Debian 5
• Suite de aplicações de servidor xampp
• Apache (servidor web)
• PHP (interpretador de comandos)
• MySQL (SGBD relacional)
• ProFTP (servidor ftp)
• ...
• O xampp pode ser descarregado aqui > http://www.apachefriends.org/en/xampp.html
4. Introdução
o ambiente de desenvolvimento open-source
• Debian:
• Utilizador: aluno
• Password: esap (a mesma de root)
• Pasta dos ficheiros do servidor apache:
• /opt/lampp/htdocs
5. Introdução
páginas estáticas vs dinâmicas | páginas estáticas
Uma página estática para a Web é uma página cujos conteúdos foram completamente determinados pelo seu
autor.
Quer isto dizer que o conteúdo e o aspecto dessa página é sempre o mesmo, independentemente de quem
visita a página, quando a visita ou como a visita.
Essencialmente, consiste num ficheiro HTML que se encontra publicado num servidor Web.
6. Introdução
páginas estáticas vs dinâmicas | páginas estáticas | limitações
deste tipo de página
• Não é possível personalizar a página para o utilizador que a está a visualizar de modo a que esta varie ao longo do
tempo de acordo com o modo como está a ser visualizada... seria portanto impossível haver websites ao estilo da
web 2.0 (artigos de jornais com comentários quase em tempo real, upload de vídeos, blogs, etc...
• Alterações nos seus conteúdos ou aspecto só podem ser efectuados através da edição do próprio código HTML
pedido de ficheiro
html
B
resposta browser cliente
7. Introdução
páginas estáticas vs dinâmicas | páginas dinâmicas
• Uma página dinâmica para a Web é uma página cujos conteúdos não são determinados no seu estado inicial (isto
é, quando é publicada pelo autor); o conteúdo final da página é determinado após um utilizador executar um
pedido da mesma ao servidor Web através de um browser;
• Os conteúdos e aspecto das páginas pode variar de pedido para pedido;
• Para tornar as páginas dinâmicas é necessário substituir algumas partes (ou a totalidade) do código HTML por
uma outra linguagem. No momento em que existe um pedido de acesso à página, estas instruções são
executadas / processadas pelo servidor e é então gerada a página final
servidor
pedido
html
processamento B
resposta browser cliente
8. Introdução
funcionamento modelo cliente-servidor (dynamic)
1. O cliente envia um pedido (GET ou POST) ao servidor (Apache)
2. O Apache processa o pedido com ajuda da biblioteca de PHP
1. Caso seja necessário, efectua queries no sgbd (mysql)
3. Por último, o Apache responde com um documento html contendo o resultado do pedido do cliente.
servidor
pedido
html
processamento B
resposta browser cliente
10. A linguagem PHP
história...
• 1995
• Rasmus Lerdorf desenvolve Script Perl/CGI (contador de visitantes da sua página)
• Oferece Script sob o nome – Personal Home Page
• 1997
• PHP 2.0
• Personal Home Page/Form Interpreter
• Popularidade cresce exponencialmente
• Desenvolve-se uma comunidade de programadores/utilizadores
• 1998
• PHP 3.0 --> 1999 + 1 milhão de utilizadores
• 2000
• PHP 4.0 PHP: Hypertext Preprocessor
• Motor/Parser reescrito - Zend Engine
• Gestão Recursos, OOP, Gestão de Sessões, Encrypt, ISAPI, JAVA,
• 2004
• PHP 5.0
• Maior suporte a OOP - Desenvolvimento de Frameworks (ZEND)
• Suporte a XML, Web Services (SOAP), …
• Utilizada em mais de 20 milhões de domínios…
11. A linguagem PHP
porquê PHP e não ASP, JSP ou outra?
• Custos (gratuito!)
• Disponível para diversas plataformas (Linux, Unix, Windows, Mac OS X)
• Funciona com os servidores web mais famosos (Apache em Linux, MS IIS em Windows)
• Suporta maioria dos SGBDs (MySQL, PostegreSQL, Oracle, MS-SQL, ODBC...)
• Fácil integração noutros serviços de rede:
• LDAP, IMAP, SNMP, HTTP, POP3, Sockets...
• Linguagem (sintaxe) simples, principalmente para quem já programou em C;
• Fácil de começar
• Boa documentação em português (open source)
• Comunidade enorme!
12. A linguagem PHP
o que podemos fazer com ela?
• Recolher e processar dados de formulários
• Criar conteúdos dinâmicos, ligados a bases de dados
• Enviar e receber cookies
• Criar sessões no navegador
• Criar imagens dinamicamente (biblioteca GD)
• Gerar ficheiros PDF
• Gerar qualquer tipo de ficheiros de texto (XML, CSV, .XLS)
• Interagir com a shell do sistema operativo (copiar ficheiros, criar pastas, mudar permissões, fazer backups...)
• Criar e “consumir” web-services
• etc. etc. etc...
16. A linguagem PHP
introdução à sintaxe | variáveis regulares
• Representadas pelo símbolo $ seguido de uma ou mais letras
• Ex. $login $passwd $cor_preferida $preferencia
• O PHP é case sensitive, ou seja, faz distinção entre maiusculas e minusculas no nome da variável
• $nome != $NoMe
• Não é necessário declarar (inicializar) as variáveis no topo do documento nem o seu tipo (é dinâmico)
17. A linguagem PHP
introdução à sintaxe | variáveis superglobais
• $_SERVER
• Fornece dados sobre o ambiente em que a Web application corre (servidor)
• $_FILES
• Dados sobre os ficheiros transferidos para o servidor pelo método POST
• $_ENV
• Tal como a $_SERVER fornece dados sobre o ambiente onde a Web application corre (servidor e cliente)
• $_SESSION
• Guarda os dados de todas as variáveis de sessão dum utilizador
18. A linguagem PHP
introdução à sintaxe | variáveis superg. | $_SERVER
• $_SERVER $_SERVER['HTTP_HOST'] = aulas
$_SERVER['HTTP_USER_AGENT'] = Mozilla/5.0 (Macintosh; U; Intel
•
Mac OS X 10.5; pt-PT; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3
Fornece dados sobre o ambiente em que a Web $_SERVER['HTTP_ACCEPT'] = text/html,application/xhtml
+xml,application/xml;q=0.9,*/*;q=0.8
$_SERVER['HTTP_ACCEPT_LANGUAGE'] = pt,pt-br;q=0.8,en-
application corre (servidor) us;q=0.5,en;q=0.3
$_SERVER['HTTP_ACCEPT_ENCODING'] = gzip,deflate
$_SERVER['HTTP_ACCEPT_CHARSET'] =
ISO-8859-1,utf-8;q=0.7,*;q=0.7
$_SERVER['HTTP_KEEP_ALIVE'] = 300
$_SERVER['HTTP_CONNECTION'] = keep-alive
$_SERVER['PATH'] = /usr/bin:/bin:/usr/sbin:/sbin
$_SERVER['SERVER_SIGNATURE'] =
$_SERVER['SERVER_SOFTWARE'] = Apache
$_SERVER['SERVER_NAME'] = aulas
$_SERVER['SERVER_ADDR'] = 127.0.0.1
$_SERVER['SERVER_PORT'] = 80
$_SERVER['REMOTE_ADDR'] = 127.0.0.1
$_SERVER['DOCUMENT_ROOT'] = /Applications/MAMP/htdocs/
aulas_php
$_SERVER['SERVER_ADMIN'] = marcoalexpinheiro@gmail.com
$_SERVER['SCRIPT_FILENAME'] = /Applications/MAMP/htdocs/
aulas_php/index.php
$_SERVER['REMOTE_PORT'] = 63113
$_SERVER['GATEWAY_INTERFACE'] = CGI/1.1
$_SERVER['SERVER_PROTOCOL'] = HTTP/1.1
$_SERVER['REQUEST_METHOD'] = GET
$_SERVER['QUERY_STRING'] =
$_SERVER['REQUEST_URI'] = /
$_SERVER['SCRIPT_NAME'] = /index.php
$_SERVER['PHP_SELF'] = /index.php
$_SERVER['REQUEST_TIME'] = 1254769862
$_SERVER['argv'] = Array
$_SERVER['argc'] = 0
19. A linguagem PHP
introdução à sintaxe | variáveis superg. | $_FILES
• $_FILES
• Dados sobre os ficheiros transferidos para o $foto_temp = $_FILES["nomeCampo"]["tmp_name"];
//NOME DO ARQUIVO NA MÁQUINA DO USUÁRIO
servidor pelo método POST $foto_name = $_FILES["nomeCampo"]["name"];
//TAMANHO DO ARQUIVO
$foto_size = $_FILES["nomeCampo"]["size"];
//TIPO MIME DO ARQUIVO
$foto_type = $_FILES["nomeCampo"]["type"];
20. A linguagem PHP
introdução à sintaxe | variáveis superg. | $_ENV
• $_ENV
$_ENV['SHELL'] = /bin/bash
•
$_ENV['TMPDIR'] = /var/folders/kj/kjQ0yyueFIGcanhFcYS2Xk+++TI/-
Tal como a $_SERVER fornece dados sobre o Tmp-/
$_ENV['Apple_PubSub_Socket_Render'] = /tmp/launch-gRnkfD/
Render
ambiente onde a Web application corre (servidor e $_ENV['USER'] = alexkidd
$_ENV['COMMAND_MODE'] = legacy
cliente) $_ENV['SSH_AUTH_SOCK'] = /tmp/launch-G3tZvU/Listeners
$_ENV['__CF_USER_TEXT_ENCODING'] = 0x1F5:0:0
$_ENV['PATH'] = /usr/bin:/bin:/usr/sbin:/sbin
$_ENV['PWD'] = /
$_ENV['SHLVL'] = 1
$_ENV['HOME'] = /Users/alexkidd
$_ENV['DYLD_LIBRARY_PATH'] = /Applications/MAMP/Library/lib:
$_ENV['LOGNAME'] = alexkidd
$_ENV['DISPLAY'] = /tmp/launch-kgoYXi/:0
$_ENV['SECURITYSESSIONID'] = a21180
$_ENV['_'] = /Applications/MAMP/Library/bin/httpd
21. A linguagem PHP
introdução à sintaxe | variáveis superg. | $_SESSION
• $_SESSION
• Por vezes há a necessidade de ter uma variável cujo valor seja acessível em diversas páginas da
mesma aplicação web - são as chamadas variáveis de sessão
• session_start() - inicia / continua sessão na página actual
• session_destroy() - destroi a sessão e respectivas variáveis
index.php
contactos.php
22. A linguagem PHP
introdução à sintaxe | constantes
• $_SESSION
• Valores que não são modificados ao longo da execução da aplicação - Valores Globais
23. A linguagem PHP
introdução à sintaxe | $_COOKIES
• $_COOKIES
• Por vezes há a necessidade de guardar uma variável do lado do cliente. Tal pode ser feito com
recurso a um cookie. Desta forma, o valor desta pode ser recuperado mesmo depois do utilizador
desligar o seu computador (desde que não elimine os cookies do browser...)
26. A linguagem PHP
introdução à sintaxe | variáveis | funções para tipos
• Eis algumas funções verificadoras de tipo de dados (retorna uma variável booleana)
• is_bool()
• is_numeric()
• is_float()
• is_int()
• is_string()
• is_object()
• is_array()
• No caso do programador querer simplesmente saber qual o tipo:
• echo gettype ($variavel);
27. A linguagem PHP
introdução à sintaxe | variáveis | arrays
• Os arrays podem ser associativos, numéricos ou multidimensionais
47. A linguagem PHP
Formulários e $_GET
formulário.php
Atenção ao envio de
informação privada pois
ficará exposta!!
http://www.esap.edu.pt/processa.php?nome=Tonecas&idade=37
processa.php
56. A linguagem PHP
SSI - server side include
• No PHP é possível incluir o conteúdo de um ficheiro .php dentro de outro do lado do servidor, antes deste ser
processado;
• Torna-se assim possível não repetir código e, consequentemente, melhorar a organização de toda a aplicação;
• O PHP oferece ao programador duas funções para o fazer:
• include() (ou include_once() para, caso já tenha sido incluido, não o volte a fazer)
• require() (ou require_once() para, caso já tenha sido incluido, não o volte a fazer)
• A maior diferença entre ambas é que a require() interrompe o script principal exista algum erro no ficheiro a
incluir, enquanto que a include() não.
57. A linguagem PHP
datas
• A função Date() serve para formatar convenientemente uma data em PHP;
• d - representa o dia do mês (01 a 31)
• m - representa o número do mês (01 a 12)
• Y - representa o ano (com quatro dígitos)
58. A linguagem PHP
introdução à sintaxe | OOP
• Classes
• new
• Cria uma nova instância de uma classe
• $this
• referência ao objecto que chamou
• parent
• referência a classe extendida
59. A linguagem PHP
introdução à sintaxe | OOP
• Classes
• ->
• acesso aos membros da instância
• ::
• Acesso aos membros da classe
• extends
• Faz uma classe herdar as propriedades e métodos de outra
60. A linguagem PHP
introdução à sintaxe | OOP
• Classes
• __construct
• Contrutor da classe, chamado quando se usa new Classe()
• __destruct
• Destrutor da Classe