Aulas PHP Com Mysql
Aulas PHP Com Mysql
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");
}
}
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
47
Desenvolvimento de Aplicações para WEB com PHP/MYSQL - Tadeu Ferreira Oliveira - 2007