Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Programção PHP
1. Aplicações WEB com PHP
Desenvolvimento de Aplicações para WEB
com PHP e MySQL
Por Tadeu Ferreira Oliveira
1
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
2. Conteúdo Programático
■ A Linguagem PHP
■ Programando em PHP
■ Banco de Dados
■ Segurança
2
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
3. A linguagem PHP
■ Porque PHP?
■ O conjunto LAMP (Linux Apache Mysql PHP)
■ Requisição HTTP e Respostas
■ Os Métodos GET e POST
■ Scripts de Cliente e Scripts de Servidor
■ Hello World!
3
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
4. Programando em PHP
■ Sintaxe
■ Variáveis
■ Obtendo dados de uma página HTML
■ Vetores
■ Repetição
■ Condicionais (if e switch)
■ Funções
■ Classes
■ Exemplos
■ Delimitando código PHP dentro do HTML
4
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
5. Banco de Dados
■ Conexão com o banco de Dados
■ Executando uma query de consulta
■ Obtendo o resultado
■ Formas de obtenção do resultado de uma
query
■ Sessões
■ Autenticando um usuário
5
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
6. Segurança
■ Conceitos básicos
■ SQL Injection
■ XSS(Cross-site-scripting)
■ Protegendo as senhas de seu usuário
6
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
7. A Linguagem PHP
■ Por quê PHP?
Sintaxe parecida com C/C++ porém
simplificada
Desenvolvimento rápido
Altamente integrada ao Servidor WEB mais
usado no mundo: Apache
Desenhada para a Internet
Software Livre
7
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
8. LAMP: tudo que você precisa
■ Linux ■ Linux Sistema
Sistema Operacional Operacional Livre
■ Apache ■ Apache o Servidor
Servidor WEB WEB mais usado no
■ MySQL mundo
Servidor de Banco ■ MySQL Open Source
de Dados
parceiro do PHP a
■ PHP
Linguagem
muito tempo
■ Desenvolvimento no
Interpretada
Windows
■ Execução no Linux
8
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
9. Programando na WEB
■ O protocolo HTTP
PHP está
(4)
aqui!!
Response
(1) (2)
Request Dados
APACHE
(3)
Dados
MySQL
9
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
10. Programando na WEB
■ Requisições e respostas HTTP
■ GET
Passado na URL
Restrições de tamanho
Claramente visível a qualquer usuário
➔ Ex.:
- http://www.ig.com.br/notcia.php?data=28052007&usuario=
Tadeu
■ POST
Passado no cabeçalho HTTP
Espaço de para os parâmetros muito maior
Pouco visível ao usuário comum
- www.ig.com.br/notcia.php
10
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
11. O Método GET
■ As variáveis são passadas em texto junto da
URL
■ Composição
http://site.com/pagina.php?var1=valor1&var2=
valor2
■ O Limite para passagem de variáveis é de
255 bytes
■ O texto deve ser URL Encoded
Use a função urlencode();
■ Assim caracteres especiais são trocados
pelo seu código em hexadecimal
Ex: O texto:
➔ “Paca Tatu Cutia Não” ficaria
➔ “Paca+Tatu+Cutia+N%E3o”
11
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
12. O Método POST
■ Não está limitado ao tamanho da URL
■ Não precisa ser explicitamente URL
Enconded
■ É passado apenas usando <form> HTML
■ Invisível ao usuário comum
■ Não dá pra usar em links
12
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
13. Script Cliente X Script Servidor
■ Não confunda banana com laranja
13
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
14. Hello World!
■ Mãos à Obra!
<?php
echo(“Hello World”);
?>
14
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
15. Sintaxe
■ Linguagem comum estruturas de repetição
e condicionais
■ Pode ser utilizada Orientação a Objetos
■ Suporte a procedimentos e funções
■ Fracamente Tipada
■ Linguagem Interpretada
■ Comentários de uma linha com //
Ou /**/ para mais de uma linha
<?php
/*Este é um comentário PHP de várias linhas,
tudo que estiver dentro dele será ignorado*/
echo(“Hello World”);
//este é um comentário de uma linha
?>
15
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
16. Variáveis
■ Não precisam ser declaradas
■ São identificadas por ter um $ na frente
■ Nomes de variáveis válidos começam com
uma letra ou _ e podem ter números
■ As variáveis começadas por __ (dois
underlines são para uso interno)
■ CaSe-SeNsItIvE
■ Exemplos
<?php
$a = 1;
$codigo = “S0003”;
$usuario1 = “Tadeu”;
$_u_ = (3 * 5) + $a;
$__NAO_USE_ISSO__ = 1;
?>
16
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
17. Strings
■ Concatenar usando .(Ponto)
■ “ e ' são diferentes
■ “$variavel” != '$variavel'
■ Caracter de escape
■ Caracteres Especiais
“n”
“t”
17
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
18. Vetores
■ O PHP suporta vetores e matrizes;
■ Não precisam ser declarados explicitamente
■ Podem ter índices numéricos e índices
<?php
textuais é um vetor com índices numéricos
//este
$vet[0] = “banana”;
$vet[1] = “maçã”;
$vet[2] = “caju”;
//este é um vetor com índices textuais
$vet[“carro”] = “vectra”;
$vet[“nome”] = “Rasmus”;
$vet[“senha”] = “A5D151F5E31F5B5CF15”;
//esta é uma matriz
$matriz[0][0] = 1;
$matriz[0][1] = 2;
$matriz[1][0] = 3;
$matriz[1][1] = 4;
?>
18
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
19. Obtendo dados de uma página
■ Depende do method do <form>
■ $_POST
■ $_GET
<?php
echo(“Olá”.$_POST[“nome”]);
?>
19
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
20. A Tag <FORM>
■ <form
name
action
method
➔ GET <form>
➔ POST <input type=text name=login>
<input type=password name=senha>
■ > <input type=submit value=Entrar>
■ <input </form>
name
type
➔ text
➔ password
➔ submit
■ >
20
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
21. Condicionais (if e switch)
■ IF
$politico = quot;empregadoquot;;
if ($politico == quot;aposentadoquot;){
echo(quot;Vida mansa...quot;);
}else{
echo(quot;Vida boa...quot;);
}
21
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
22. Operadores Relacionais
■ ==
igual
■ !=
diferente
■ <=
menor ou igual
■ >=
maior ou igual
■ ===
totalmente igual
22
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
23. Repetição
■ WHILE
■ $i = 1;
■ while($i < 3){
echo(quot;Oi<br>quot;);
■ $i++;
■ }
■ DO – WHILE
$i = 1;
■
do{
■ echo(quot;Oi<br>quot;);
$i++;
■
}while($i < 3);
■
23
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
24. Repetição
■ FOR
■ for($i=1;$i<=3;$i++){
■ echo(quot;Oi<br>quot;);
}
■
■ FOREACH
■ $vet[0] = quot;Oiquot;;
$vet[1] = quot;Oiquot;;
■ $vet[2] = quot;Oiquot;;
■ foreach($vet as $item){
echo($item.quot;<br>quot;);
■ }
24
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
25. Condicionais (if e switch)
■ SWITCH
$time = quot;flamengoquot;;
switch($time){
case quot;flamengoquot; : echo(quot;Voou...quot;);
break;
case quot;grêmioquot; : echo(quot;Ficou...quot;);
break;
case quot;vascoquot; : echo(quot;Voou...quot;);
break;
case quot;sergipequot; : echo(quot;ãhn!?quot;);
break;
default : echo(quot;Time desconhecidoquot;);
break;
}
25
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
26. Funções
■ A biblioteca de Funções pré-definidas do
PHP é um dos seus grandes trunfos
■ Acessível em:
http://www.php.net/manual/pt_BR/funcref.php
■ Funções definidas pelo usuário
Não têm tipo de retorno definido
<?php
//definição de função
function soma($num1, $num2){
echo(quot;Antes<br>quot;);
return $num1 + $num2;
//linha abaixo não executará por causa do return
echo(quot;Depois<br>quot;);
}
echo(soma(1,2));
?>
26
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
27. Funções
■ Passagem de parâmetros
Padrão por Valor
Por Referência utiliza-se o operador &
<?php
//argumento passados por referência
function soma(&$num1, &$num2){
echo(quot;Antes<br>quot;);
return $num1 + $num2;
}
echo(soma(1,2));
?>
27
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
28. Classes
■ Suporte no PHP5.0 melhorado
■ Exemplo
<?php
class ClasseSimples
{
// declaração de membro
public $var = 'um valor padrão';
// declaração de método
public function getVar() {
return $this->var;
}
}
?>
28
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
29. Classes - Construtor e Destrutor
■ Existem duas funções especiais em toda
classe
■ __contructor()
__destructor()
■ <?php
class ClasseSimples{
function __construct() {
echo(quot;Criando Objetoquot;);
}
function __destruct() {
echo(quot;Finalizando Objetoquot;);
}
}
$objSimples = new ClasseSimples();
?>
29
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
30. Classes – Visibilidade de Membros
■ public
■ protected
■ private
■ Caso não seja especificado o padrão é
public
30
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
31. Código PHP dentro do HTML
<HTML>
<BODY>
Lista de Nomes:
<form>
<?php
for($i=1;$i<5;$i++){
echo(“<input type=text><br>”)
}
?>
<input type=submit>
</form>
</BODY>
</HTML>
31
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
32. Conexão com o banco de Dados
■ Funções específicas para cada banco
■ Melhor performance
■ Mais dependência do servidor de banco de
dados
■ MySQL X PostgreSQL
32
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
33. Conectando com o MySQL
■ Funções da API do MySQL
■ mysql_connect(servidor,usuario,senha);
Conecta ao banco de dados retornando um link
para a conexão
Retorna false caso a conexão não tenha sido
possível
<?php
$con = mysql_connect(“localhost”, ”root”,
”tiradentes”);
if($con){
echo(“conexão efetuada com sucesso”);
}else{
echo(“Erro na conexão com o banco de dados”);
}
33
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
34. Executando uma query de consulta
■ Após efetuar a conexão podemos usar o link
para efetuar queries
■ Selecionar o banco de dados com
mysql_select_db(banco,conexão)
■ Efetuar a query com o comando
mysql_query(query, conexão)
<?php
if (mysql_select_db(“test”,$con)){
$result = mysql_query(“select * from tabela”);
}else{
echo(“O banco de dados não pode ser selecionado.”)
}
?>
34
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
35. Obtendo o resultado
■ O PHP retornará os resultados da query em
um vetor
■ Dependendo de como o resultado for obtido
será um vetor cujos índices são numéricos
ou o nome dos campos.
<?php
if ($linha = mysql_fetch_array($result)){
echo($linha[0]);
}else{
echo(“Nenhuma informação encontrada”);
}
?>
35
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
36. Obtendo todas linhas de uma query
■ Receita de bolo
<?php
while($linha = mysql_fetch_array($result)){
echo($linha[“nome_do_campo”].”<br>”);
}
?>
36
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
37. Executando query de manutenção
■ Feita da mesma maneira da query de
consulta
■ Retorna true caso a query tenha executado
corretamente
■ Pode se usar o comando
mysql_affected_rows para descobrir
quantas linhas foram afetadas pela última
query executada
37
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
38. Sessões
■ HTTP não é orientado a conexão
■ Maneira de identificar um usuário
■ Baseada em cookies
■ Os dados são armazenados no servidor
■ Apenas um cookie é gravado no cliente
38
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
39. Sessões - Cookies
■ Um cookie é um valor que após gravado
pelo servidor o browser do cliente é
responsável por enviar a cada requisição
■ Assim o PHP envia um número para o
cliente no início da sessão
■ Esse número identifica um arquivo no
servidor onde estão os dados daquela
sessão
39
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
40. Exemplo de uso de sessão
■ Sempre que for necessário acessar
informações na sessão deve-se chamar a
função session_start()
■ Essa função é responsável por preencher o
vetor especial $_SESSION com as variáveis
registradas na sessão atual
■ Caso queira terminar a sessão antes do
tempo determinado pode-se usar a função
session_unset() e session_destroy()
40
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
41. Autenticando um usuário
<?php
session_start();
if(isset($_SESSION[quot;nomequot;])){
echo(quot;Olá quot;.$_SESSION[quot;nomequot;]);
}else{
echo(quot;Você não está autenticado.quot;);
}
?>
41
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
42. Conceitos básicos de Segurança
■ Se você está online você está vulnerável
■ Não existe sistema 100% seguro
■ Existem sistemas mais seguros que outros
42
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
43. SQL Injection
■ Não confie no usuário
■ Entradas de usuários são a porta de entrada
no seu servidor
■ Sempre use a função addslashes() para
retirar aspas e caracteres especiais
<?php
$query = “select * from usuario where”.
“ senha = '”.$_POST[senha]”.
“' and login = '”.$_POST[senha].”'”;
//e se o cara digita na senha algo inválido vai
//ser inserido na sua query
?>
43
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
44. XSS(Cross-site-scripting)
■ Consiste em inserir código javascript ou php
dentro de uma página
■ O usuário preenche um texto e envia ao site
que adiciona esse texto a uma página
■ Comum em mural de recados
■ Coitado do ORKUT
44
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
45. Protegendo senhas de seu usuário
■ Ao enviar senha de usuário pela WEB
cuidado você pode estar sendo vigiado
■ É possível interceptar uma requisição HTTP
na rede
■ Para garantir a “invisibilidade” dos dados
pode-se usar HTTPS
■ No Yahoo-Mail a tela para digitar a senha é
HTTPS enquanto o resto do site em HTTP
comum
45
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
46. PHP – Tópicos Especiais
■ MVC no PHP com Smarty
■ Abstração de banco de dados
■ PHP também faz aplicações para desktop
com PHP-GTK
■ Pode criar imagens dianmicamente com a
biblioteca GD
■ Instalação do PHP com APACHE no Windows
46
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
47. Obrigado
Para dúvidas correções e comentários
acesse www.notnet.blogspot.com
ou tadeu_fo@yahoo.com.br
47
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007