Você está na página 1de 47

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
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
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
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
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
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
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
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
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
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
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
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
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
Hello World!
■ Mãos à Obra!
<?php
echo(“Hello World”);
?>

14
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
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
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
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
Vetores
■ O PHP suporta vetores e matrizes;
■ Não precisam ser declarados explicitamente
■ Podem ter índices numéricos e índices
<?php
textuais
//este é um vetor com índices numéricos
$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
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
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
Condicionais (if e switch)
■ IF
$politico = "empregado";
if ($politico == "aposentado"){
echo("Vida mansa...");
}else{
echo("Vida boa...");
}

21
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
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
Repetição
■ WHILE
■ $i = 1;
■ while($i < 3){
echo("Oi<br>");
■ $i++;
■ }
■ DO – WHILE
$i = 1;

do{
■ echo("Oi<br>");
$i++;

}while($i < 3);

23
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
Repetição
■ FOR
■ for($i=1;$i<=3;$i++){
■ echo("Oi<br>");
}

■ FOREACH
■ $vet[0] = "Oi";
$vet[1] = "Oi";
■ $vet[2] = "Oi";
■ foreach($vet as $item){
echo($item."<br>");
■ }

24
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
Condicionais (if e switch)
■ SWITCH
$time = "flamengo";

switch($time){
case "flamengo" : echo("Voou...");
break;
case "grêmio" : echo("Ficou...");
break;
case "vasco" : echo("Voou...");
break;
case "sergipe" : echo("ãhn!?");
break;
default : echo("Time desconhecido");
break;
}

25
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
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("Antes<br>");
return $num1 + $num2;
//linha abaixo não executará por causa do return
echo("Depois<br>");
}
echo(soma(1,2));
?>
26
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
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("Antes<br>");
return $num1 + $num2;
}
echo(soma(1,2));
?>

27
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
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
Classes - Construtor e Destrutor
■ Existem duas funções especiais em toda
classe
■ __contructor()
__destructor()
■ <?php
class ClasseSimples{

function __construct() {
echo("Criando Objeto");
}

function __destruct() {
echo("Finalizando Objeto");
}
}

$objSimples = new ClasseSimples();


?>
29
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
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
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
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
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
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
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
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
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
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
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
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
Autenticando um usuário

<?php
session_start();
if(isset($_SESSION["nome"])){
echo("Olá ".$_SESSION["nome"]);
}else{
echo("Você não está autenticado.");
}
?>

41
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007
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
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
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
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
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
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