Upload
marco-pinheiro
View
1.913
Download
4
Embed Size (px)
DESCRIPTION
Citation preview
PHPprogramação server-side
www.w3schools.com/php/php_intro.aspwww.php.net
• 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
Introduçãoo ambiente de desenvolvimento open-source
Introduçãoo ambiente de desenvolvimento open-source
• Debian:
• Utilizador: aluno
• Password: esap (a mesma de root)
• Pasta dos ficheiros do servidor apache:
• /opt/lampp/htdocs
Introduçãoo ambiente de desenvolvimento open-source
Introduçãopá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.
Introduçãopá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
resposta
pedido de ficheiro
B
browser cliente
html
Introduçãopá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
resposta
pedido
servidor
B
browser cliente
htmlprocessamento
Introduçãofuncionamento 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.
resposta
pedido
servidor
B
browser cliente
htmlprocessamento
Introduçãofuncionamento modelo cliente-servidor (dynamic)
resposta
pedido
servidor
B
browser cliente
htmlprocessamento
• 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…
A linguagem PHPhistória...
A linguagem PHPporquê 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!
A linguagem PHPo 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...
A linguagem PHPbons exemplos de onde ela está actualmente
A linguagem PHPintrodução à sintaxe | delimitadores (e echo!)
A linguagem PHPintrodução à sintaxe | comentários
A linguagem PHPintroduçã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)
A linguagem PHPintroduçã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
A linguagem PHPintrodução à sintaxe | variáveis superg. | $_SERVER
• $_SERVER
• Fornece dados sobre o ambiente em que a Web
application corre (servidor)
$_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$_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-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'] = [email protected]$_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
A linguagem PHPintrodução à sintaxe | variáveis superg. | $_FILES
• $_FILES
• Dados sobre os ficheiros transferidos para o
servidor pelo método POST
$foto_temp = $_FILES["nomeCampo"]["tmp_name"];
//NOME DO ARQUIVO NA MÁQUINA DO USUÁRIO$foto_name = $_FILES["nomeCampo"]["name"];
//TAMANHO DO ARQUIVO$foto_size = $_FILES["nomeCampo"]["size"];
//TIPO MIME DO ARQUIVO$foto_type = $_FILES["nomeCampo"]["type"];
A linguagem PHPintrodução à sintaxe | variáveis superg. | $_ENV
• $_ENV
• Tal como a $_SERVER fornece dados sobre o
ambiente onde a Web application corre (servidor e
cliente)
$_ENV['SHELL'] = /bin/bash$_ENV['TMPDIR'] = /var/folders/kj/kjQ0yyueFIGcanhFcYS2Xk+++TI/-Tmp-/$_ENV['Apple_PubSub_Socket_Render'] = /tmp/launch-gRnkfD/Render$_ENV['USER'] = alexkidd$_ENV['COMMAND_MODE'] = legacy$_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
A linguagem PHPintroduçã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
A linguagem PHPintrodução à sintaxe | constantes
• $_SESSION
• Valores que não são modificados ao longo da execução da aplicação - Valores Globais
A linguagem PHPintroduçã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...)
A linguagem PHPintrodução à sintaxe | variáveis | tipos (1/2)
• Boolean
• true ou false; 1 ou 0;
• Numbers
• Operadores: + - * / ++ --
• String
• ‘ ‘ (single-quoted) - não processa nenhum código interno
• “ “ (double-quoted) - processa código interno
• <<< EOT ... EOT;
• Operadores: . (ponto, para concatenar strings)
• Ex. $nomeCompleto = $primeiroNome . $ultimoNome ;
A linguagem PHPintrodução à sintaxe | variáveis | tipos (2/2)
• Arrays
• Funções úteis
• unset()
• print_r()
• Objects
• Resources
• NULL
A linguagem PHPintroduçã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);
A linguagem PHPintrodução à sintaxe | variáveis | arrays
• Os arrays podem ser associativos, numéricos ou multidimensionais
A linguagem PHPintrodução à sintaxe | variáveis | arrays associativos
A linguagem PHPintrodução à sintaxe | variáveis | arrays numéricos
A linguagem PHPintrodução à sintaxe | variáveis | arrays multidim.
A linguagem PHPintrodução à sintaxe | variáveis | arrays
A linguagem PHPintrodução à sintaxe | variáveis | arrays | funções
• count() || sizeof()
• array_push()
• array_rand()
• in_array()
• ...
A linguagem PHPintrodução à sintaxe | estrutura de controle | IF
• Condicional - IF
A linguagem PHPintrodução à sintaxe | estrutura de controle | IF
• Condicional - IF (alternativas)
A linguagem PHPintrodução à sintaxe | estrutura de controle | IF ELSE
• Condicional - IF ELSE
A linguagem PHPintrodução à sintaxe | estrutura de controle | Switch
A linguagem PHPintrodução à sintaxe | operadores de atribuição
A linguagem PHPintrodução à sintaxe | operadores lógicos
A linguagem PHPintrodução à sintaxe | operadores de comparação
A linguagem PHPintrodução à sintaxe | estrutura de controle | Ciclos
• While
A linguagem PHPintrodução à sintaxe | estrutura de controle | Ciclos
• Do
A linguagem PHPintrodução à sintaxe | estrutura de controle | Ciclos
• For
A linguagem PHPintrodução à sintaxe | estrutura de controle | Ciclos
• Foreach
• Pode ser interrompido em qualquer momento com o comando break;
A linguagem PHPintrodução à sintaxe | funções (que retornam)
• Function
A linguagem PHPintrodução à sintaxe | funções (procedimento)
• Function
A linguagem PHPFormulários e $_POST
formulário.php
processa.php
A linguagem PHPFormulários e $_GET
formulário.php
processa.php
http://www.esap.edu.pt/processa.php?nome=Tonecas&idade=37
Atenção ao envio de informação privada pois
ficará exposta!!
A linguagem PHPQuerystrings e $_GET
cria_query.php
processa.php
A linguagem PHPredireccionamento
A linguagem PHPenvio de e-mail simples
A linguagem PHPupload de ficheiros (1/3)
formulário.php
A linguagem PHPupload de ficheiros (2/3)
upload_file.php
A linguagem PHPupload de ficheiros (3/3)
upload_file.php• Validação dos ficheiros enviados
A linguagem PHPmanipulação de imagens (GD)
A linguagem PHPmanipulação de imagens (GD)
A linguagem PHPSSI - 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.
A linguagem PHPdatas
• 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)
A linguagem PHPintroduçã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
A linguagem PHPintroduçã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
A linguagem PHPintrodução à sintaxe | OOP
• Classes
• __construct
• Contrutor da classe, chamado quando se usa new Classe()
• __destruct
• Destrutor da Classe