programção php

47
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007 1 Aplicações WEB com PHP Desenvolvimento de Aplicações para WEB com PHP e MySQL Por Tadeu Ferreira Oliveira

Upload: ceap

Post on 06-Jul-2015

4.707 views

Category:

Education


3 download

DESCRIPTION

Curso de progamação em php e mysql.

TRANSCRIPT

Page 1: Programção PHP

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

Aplicações WEB com PHP

Desenvolvimento de Aplicações para WEB com PHP e MySQL

Por Tadeu Ferreira Oliveira

Page 2: Programção PHP

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

Conteúdo Programático

■ A Linguagem PHP■ Programando em PHP■ Banco de Dados■ Segurança

Page 3: Programção PHP

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

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!

Page 4: Programção PHP

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

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

Page 5: Programção PHP

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

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

Page 6: Programção PHP

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

Segurança

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

Page 7: Programção PHP

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

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

Page 8: Programção PHP

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

LAMP: tudo que você precisa

■ LLinux Sistema Operacional

■ AApache Servidor WEB

■ MMySQL Servidor de Banco

de Dados■ PPHP

Linguagem Interpretada

■ 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

Page 9: Programção PHP

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

Programando na WEB

■ O protocolo HTTP

(2) Dados

(3) Dados

PHP está aqui!!

(1) Request

(4) Response

APACHE

MySQL

Page 10: Programção PHP

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

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

Page 11: Programção PHP

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

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

Page 12: Programção PHP

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

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

Page 13: Programção PHP

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

Script Cliente X Script Servidor

■ Não confunda banana com laranja

Page 14: Programção PHP

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

Hello World!

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

Page 15: Programção PHP

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

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

?>

Page 16: Programção PHP

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

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;

?>

Page 17: Programção PHP

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

Strings

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

\■ Caracteres Especiais

“\n” “\t”

Page 18: Programção PHP

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

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;

?>

Page 19: Programção PHP

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

Obtendo dados de uma página

■ Depende do method do <form>■ $_POST■ $_GET

<?phpecho(“Olá”.$_POST[“nome”]);

?>

Page 20: Programção PHP

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

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>

Page 21: Programção PHP

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

Condicionais (if e switch)

■ IF$politico = "empregado";if ($politico == "aposentado"){ echo("Vida mansa...");}else{ echo("Vida boa..."); }

Page 22: Programção PHP

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

Operadores Relacionais

■ == igual

■ != diferente

■ <= menor ou igual

■ >= maior ou igual

■ === totalmente igual

Page 23: Programção PHP

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

Repetição

■ WHILE■

■ DO – WHILE■

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

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

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

Page 24: Programção PHP

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

Repetição

■ FOR■

■ FOREACH■

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

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

Page 25: Programção PHP

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

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

Page 26: Programção PHP

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

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

Page 27: Programção PHP

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

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

Page 28: Programção PHP

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

Classes

■ Suporte no PHP5.0 melhorado■ Exemplo

<?phpclass ClasseSimples{ // declaração de membro public $var = 'um valor padrão';

// declaração de método public function getVar() { return $this->var; }}?>

Page 29: Programção PHP

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

Classes - Construtor e Destrutor

■ Existem duas funções especiais em toda classe

■ __contructor()■ __destructor()<?phpclass ClasseSimples{

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

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

$objSimples = new ClasseSimples();?>

Page 30: Programção PHP

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

Classes – Visibilidade de Membros

■ public■ protected■ private■ Caso não seja especificado o padrão é

public

Page 31: Programção PHP

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

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>

Page 32: Programção PHP

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

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

Page 33: Programção PHP

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

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

Page 34: Programção PHP

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

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

Page 35: Programção PHP

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

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

Page 36: Programção PHP

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

Obtendo todas linhas de uma query

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

Page 37: Programção PHP

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

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

Page 38: Programção PHP

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

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

Page 39: Programção PHP

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

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

Page 40: Programção PHP

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

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

Page 41: Programção PHP

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

Autenticando um usuário

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

Page 42: Programção PHP

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

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

Page 43: Programção PHP

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

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

Page 44: Programção PHP

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

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

Page 45: Programção PHP

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

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

Page 46: Programção PHP

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

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

Page 47: Programção PHP

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

Obrigado

Para dúvidas correções e comentáriosacesse www.notnet.blogspot.com

ou [email protected]