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
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
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!
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
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
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
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
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
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
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
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
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
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 200713
Script Cliente X Script Servidor
■ Não confunda banana com laranja
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 200714
Hello World!
■ Mãos à Obra!<?php echo(“Hello World”);?>
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
?>
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;
?>
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”
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;
?>
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”]);
?>
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>
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..."); }
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
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);
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>");}
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;}
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));?>
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));?>
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; }}?>
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();?>
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
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>
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
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”); }
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.”) }?>
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”); }?>
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>”); }?>
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
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
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
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()
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."); }?>
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
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?>
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
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
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
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