Você está na página 1de 47
Aplicações WEB com PHP Desenvolvimento de Aplicações para WEB com PHP e MySQL Por Tadeu

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
1
Conteúdo Programático ■ A Linguagem PHP ■ Programando em PHP ■ Banco de Dados ■

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
2
A linguagem PHP ■ Porque PHP? ■ O conjunto LAMP (Linux Apache Mysql PHP) ■

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
3
Programando em PHP ■ Sintaxe ■ Variáveis ■ Obtendo dados de uma página HTML ■

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
4
Banco de Dados ■ Conexão com o banco de Dados ■ Executando uma query de

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
5
Segurança ■ Conceitos básicos ■ SQL Injection ■ XSS(Cross-site-scripting) ■ Protegendo as senhas de seu

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
6
■ Por quê PHP? A Linguagem PHP  Sintaxe parecida com C/C++ porém simplificada 

Por quê PHP?

A Linguagem 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
7
LAMP: tudo que você precisa ■ L L inux ■ Linux Sistema Operacional Livre ■

LAMP: tudo que você precisa

LLinux

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

Sistema Operacional

AApache

Servidor WEB

MMySQL

Servidor de Banco de Dados

PPHP

Linguagem

 Servidor de Banco de Dados ■ P P HP  Linguagem Interpretada 8 Desenvolvimento de

Interpretada

de Banco de Dados ■ P P HP  Linguagem Interpretada 8 Desenvolvimento de Aplicações para
8
8

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

■ O protocolo HTTP (4) Response (1) Request Programando na WEB APACHE PHP está aqui!!

O protocolo HTTP

■ O protocolo HTTP (4) Response (1) Request Programando na WEB APACHE PHP está aqui!! (2)

(4)

Response

(1)

Request

Programando na WEB

O protocolo HTTP (4) Response (1) Request Programando na WEB APACHE PHP está aqui!! (2) Dados

APACHE

PHP está aqui!!

(2)

Dados

(3)

Dados

na WEB APACHE PHP está aqui!! (2) Dados (3) Dados MySQL Desenvolvimento de Aplicações para WEB

MySQL

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

9
9
Programando na WEB ■ Requisições e respostas HTTP ■ GET  Passado na URL 

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
10
O Método GET ■ As variáveis são passadas em texto junto da URL ■ Composição

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”

Útil para usar em links

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

11
11
O Método POST ■ Não está limitado ao tamanho da URL ■ Não precisa ser

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
12
Script Cliente X Script Servidor ■ Não confunda banana com laranja Desenvolvimento de Aplicações para

Script Cliente X Script Servidor

Não confunda banana com laranja

X Script Servidor ■ Não confunda banana com laranja Desenvolvimento de Aplicações para WEB com PHP/MYSQL
X Script Servidor ■ Não confunda banana com laranja Desenvolvimento de Aplicações para WEB com PHP/MYSQL
X Script Servidor ■ Não confunda banana com laranja Desenvolvimento de Aplicações para WEB com PHP/MYSQL

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

13
13
■ Mãos à Obra! Hello World! <?php echo(“Hello World”); ?> Desenvolvimento de Aplicações para WEB

Mãos à Obra!

Hello World!

<?php echo(“Hello World”);

?>

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

14
14
Sintaxe ■ Linguagem comum estruturas de repetição e condicionais ■ Pode ser utilizada Orientação a

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
15
Variáveis ■ Não precisam ser declaradas ■ São identificadas por ter um $ na frente

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
16
Strings ■ Concatenar usando .(Ponto) ■ “ e ' são diferentes ■ “$variavel” != '$variavel'

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
17
Vetores ■ O PHP suporta vetores e matrizes; ■ Não precisam ser declarados explicitamente ■

Vetores

O PHP suporta vetores e matrizes;

Não precisam ser declarados explicitamente

Podem ter índices numéricos e índices textuais <?php

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

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
19
A Tag <FORM> ■ <form  name  action  method ➔ GET ➔ POST

A Tag <FORM>

<form

name

action

method

GET

POST

>

<input

name

type

text

password

submit

>

<form> <input type=text name=login> <input type=password name=senha> <input type=submit value=Entrar> </form>

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

20
20
■ IF Condicionais (if e switch) $politico = "empregado"; if ($politico == "aposentado"){

IF

Condicionais (if e switch)

$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
21
■ ==  igual ■ !=  diferente ■ <=  menor ou igual ■

==

igual

!=

diferente

<=

menor ou igual

>=

maior ou igual

===

totalmente igual

Operadores Relacionais

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

22
22
Repetição ■ WHILE ■ ■ ■ ■ $i = 1; $i = 1; while($i <

Repetição

WHILE

$i = 1;

$i = 1;

while($i < 3){

while($i < 3){

echo("Oi<br>");

echo("Oi<br>");

$i++;

$i++;

} }

DO – WHILE

$i = 1;

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

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

23
23
■ ■ ■ ■ ■ ■ ■ ■ ■ FOR Repetição for($i=1;$i<=3;$i++){ echo("Oi<br>"); }

FOR

Repetição

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

}

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

24
24
■ SWITCH Condicionais (if e switch) $time = "flamengo"; switch($time){ case "flamengo" :

SWITCH

Condicionais (if e switch)

$time = "flamengo";

switch($time){

case "flamengo" : echo("Voou break;

case "grêmio"

");

: echo("Ficou break; : echo("Voou

");

case "vasco"

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
25
Funções ■ A biblioteca de Funções pré-definidas do PHP é um dos seus grandes trunfos

Funções

A biblioteca de Funções pré-definidas do PHP é um dos seus grandes trunfos Acessível em:

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

?>

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

26
26
Funções ■ Passagem de parâmetros  Padrão por Valor  Por Referência utiliza-se o operador

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
27
Classes ■ Suporte no PHP5.0 melhorado ■ Exemplo <?php class ClasseSimples {   // declaração

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
28
Classes - Construtor e Destrutor ■ Existem duas funções especiais em toda classe contructor() ■

Classes - Construtor e Destrutor

Existem duas funções especiais em toda classe contructor()

<?php

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
29
Classes – Visibilidade de Membros ■ public ■ protected ■ private ■ Caso não seja

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
30
Código PHP dentro do HTML <HTML> <BODY> Lista de Nomes: <form> <?php

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
31
Conexão com o banco de Dados ■ Funções específicas para cada banco ■ Melhor performance

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
32
Conectando com o MySQL ■ Funções da API do MySQL ■ mysql_connect(servidor,usuario,senha);  Conecta ao

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
33
Executando uma query de consulta ■ Após efetuar a conexão podemos usar o link para

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
34
Obtendo o resultado ■ O PHP retornará os resultados da query em um vetor ■

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
35
Obtendo todas linhas de uma query ■ Receita de bolo <?php while($linha = mysql_fetch_array($result)){

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
36
Executando query de manutenção ■ Feita da mesma maneira da query de consulta ■ Retorna

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
37
Sessões ■ HTTP não é orientado a conexão ■ Maneira de identificar um usuário ■

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
38
Sessões - Cookies ■ Um cookie é um valor que após gravado pelo servidor o

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
39
Exemplo de uso de sessão ■ Sempre que for necessário acessar informações na sessão deve-se

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
40
Autenticando um usuário <?php session_start(); if(isset($_SESSION["nome"])){ echo("Olá

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
41
Conceitos básicos de Segurança ■ Se você está online você está vulnerável ■ Não existe

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
42
SQL Injection ■ Não confie no usuário ■ Entradas de usuários são a porta de

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
43
XSS(Cross-site-scripting) ■ Consiste em inserir código javascript ou php dentro de uma página ■ O

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
44
Protegendo senhas de seu usuário ■ Ao enviar senha de usuário pela WEB cuidado você

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
45
PHP – Tópicos Especiais ■ MVC no PHP com Smarty ■ Abstração de banco de

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
46
Obrigado Para dúvidas correções e comentários acesse www.notnet.blogspot.com ou tadeu_fo@yahoo.com.br

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
47