Aplicações WEB com PHP

Desenvolvimento de Aplicações para WEB com PHP e MySQL Por Tadeu Ferreira Oliveira

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

1

Conteúdo Programático
A Linguagem PHP ■ Programando em PHP ■ Banco de Dados ■ Segurança

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

2

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!

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

3

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

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

4

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

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

5

Segurança
Conceitos básicos ■ SQL Injection ■ XSS(Cross-site-scripting) ■ Protegendo as senhas de seu usuário

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

6

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

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

7

LAMP: tudo que você precisa
■ ■ ■

Linux
 

Sistema Operacional Servidor WEB Servidor de Banco de Dados Linguagem Interpretada

Apache MySQL

PHP

Linux Sistema Operacional Livre ■ Apache o Servidor WEB mais usado no mundo ■ MySQL Open Source parceiro do PHP a muito tempo ■ Desenvolvimento no 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
(4) Response (1) Request APACHE PHP está aqui!!

(2) Dados

(3) Dados MySQL
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

9

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

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

10

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

11

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

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

12

Script Cliente X Script Servidor

Não confunda banana com laranja

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

13

Hello World!

Mãos à Obra!
<?php echo(“Hello World”); ?>

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

14

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

15

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

16

Strings
Concatenar usando .(Ponto) ■ “ e ' são diferentes ■ “$variavel” != '$variavel' ■ Caracter de escape

\

Caracteres Especiais
 

“\n” “\t”

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

17

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

18

Obtendo dados de uma página
Depende do method do <form> ■ $_POST ■ $_GET

<?php echo(“Olá”.$_POST[“nome”]); ?>

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

19

A Tag <FORM>

<form
  

name action method
GET ➔ POST

> ■ <input

 

<form> <input type=text name=login> <input type=password name=senha> <input type=submit value=Entrar> </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..."); }

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

21

Operadores Relacionais
■ ■ ■ ■ ■

==

igual diferente menor ou igual maior ou igual totalmente igual

!=
 

<= >=
 

===

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

22

Repetição

WHILE
echo("Oi<br>"); $i++;

■ $i = 1; ■ while($i < 3){ ■ ■ } ■ ■

$i = 1; do{ ■ echo("Oi<br>"); $i++; ■ }while($i < 3);

DO – WHILE

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

23

Repetição

FOR
}

■ for($i=1;$i<=3;$i++){ echo("Oi<br>"); ■ ■ ■

■ $vet[0] = "Oi";

FOREACH

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

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

24

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; }

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

25

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 Não têm tipo de retorno definido

Funções definidas pelo usuário

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

26

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)); ?>

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

27

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

28

Classes - Construtor e Destrutor
Existem duas funções especiais em toda classe ■ __contructor() ■ <?php __destructor()

class ClasseSimples{ function __construct() { echo("Criando Objeto"); } function __destruct() { echo("Finalizando Objeto"); } } $objSimples = new ClasseSimples(); ?>
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

29

Classes – Visibilidade de Membros
public ■ protected ■ private ■ Caso não seja especificado o padrão é public

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

30

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>

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

31

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

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

32

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”); }

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

33

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.”) } ?>

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

34

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”); } ?>

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

35

Obtendo todas linhas de uma query

Receita de bolo

<?php while($linha = mysql_fetch_array($result)){ echo($linha[“nome_do_campo”].”<br>”); } ?>

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

36

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

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

37

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

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

38

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

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

39

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()

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

40

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

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

41

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

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

42

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 ?>

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

43

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

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

44

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

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

45

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

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

46

Obrigado

Para dúvidas correções e comentários acesse www.notnet.blogspot.com ou tadeu_fo@yahoo.com.br

Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007

47