Escolar Documentos
Profissional Documentos
Cultura Documentos
Módulo 5
Introdução à Web Dinâmica com PHP
Prof. Dr. Daniel A. Furtado - FACOM/UFU
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98
Websites Estáticos
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 2
Websites Dinâmicos
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 3
O que é PHP?
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 4
Aspectos Gerais sobre o PHP
▪ Gratuito e Open Source
▪ Pode ser executado em várias plataformas
▪ Windows, Linux, Unix, Mac OS
▪ Compatível com vários servidores web
▪ Apache HTTP, NGINX, Microsoft IIS, etc.
▪ Suporta vários sistemas de banco de dados
▪ Alto desempenho
▪ Variedade de frameworks: Laravel, Symfony, etc.
▪ Serviços gratuitos de hospedagem com suporte a PHP
▪ Fácil aprendizado
▪ Popularidade
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 5
Linguagens Server-Side
PHP é utilizado em 79% dos websites que se tem
conhecimento da linguagem server-side
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 6
Exemplos de Websites Utilizando PHP
▪ Facebook
▪ Wikipedia
▪ Yahoo
▪ Flickr
▪ WordPress
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 7
O que pode ser feito com PHP?
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 8
Algumas opções para começar com PHP
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 9
Exemplos de IDE para Desenv. com PHP
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 10
Hello World com PHP
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 11
Arquivo PHP
▪ Extensão .php
▪ Código PHP deve ser inserido dentro de <?php ?>
▪ Arquivo pode conter código PHP, HTML, CSS, etc.
▪ PHP é um pré-processador de hipertexto
▪ Trechos de código PHP são pré-processados no servidor
▪ Saída gerada pelo código PHP é mesclada com o restante
▪ Resultado final é enviado para o usuário (navegador)
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 12
Ideia Geral de Funcionamento do PHP
Navegador Servidor
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 13
Hello World
<?php
?>
Arquivo exemplo1.php
contendo apenas código PHP
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 14
Hello World
<html> <html>
<body> <body>
<h1>Página dinâmica com PHP</h1> <h1>Página dinâmica com PHP</h1>
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 15
Hello World
<html> <html>
<body> <body>
... ...
<h1>Página dinâmica com PHP</h1> <h1>Página dinâmica com PHP</h1>
<p> Parágrafo 1 </p> <p> Parágrafo 1 </p>
<p> Parágrafo 2 </p>
<?php
<p> Parágrafo 3 </p>
echo "<p> Parágrafo 2 </p>";
<p> Parágrafo 4 </p>
?>
</body>
</html>
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 16
PHP e Ajax - Exemplo
Navegador Servidor
Uberlândia
Av João Naves
Santa Mônica
Minas Gerais Uberlândia
Minas Gerais
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 17
Recursos da Linguagem
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 18
Observações Gerais
▪ Declarações terminam com o ponto-e-vírgula
▪ Comentários de linha: // comentário
▪ Comentários de bloco: /* comentário */
▪ Sensível a maiúsculas/minúsculas
▪ Nomes de variáveis
▪ Constantes
▪ Chaves de arrays associativos
▪ Não sensível a maiúsculas/minúsculas
▪ Palavras reservadas da linguagem
▪ Nomes de métodos de classes
▪ Nomes de funções
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 19
Operadores
Operador Significado Operador Significado
+ Adição (e concatenação) == Comparação por igualdade
- Subtração === Comparação por igualdade,
incluindo valor e tipo
* Multiplicação
!= ou <> Diferente
/ Divisão
> Maior que
% Resto da divisão inteira
>= Maior ou igual a
++ Incremento
< Menor que
-- Decremento
<= Menor ou igual a
= Atribuição
+= Atribuição com soma && ou and “E” lógico
** Exponenciação
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 20
Estruturas Condicionais e de Repetição
if (expressão) { for ($i = 0; $i < 10; $i++)
// operações se verdadeiro {
} // operações
else { }
// operações se falso
} foreach ($array as $elem)
{
switch (expressao) { // operações
case condicao1: }
// operações
break; while (expressao)
{
case condicaoN:
// operações // operações
break; }
...
default: do {
// operações // operações
} } while (expressao)
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 21
Variáveis
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 22
Variáveis
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 23
Constantes
<?php
define('PATH_UPLOADS', '/arqs_uploads');
define('DB_NAME', 'mysqlTeste');
define('DB_PSWD', '123456');
?>
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 24
Strings
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 25
Strings e construtor echo
$idade = 15;
$mes = 10;
$dist = 30;
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 26
String Heredoc (PHP < 7.3)
$str = <<<BLOCO_HEREDOC
BLOCO_HEREDOC;
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 27
String Heredoc (PHP ≥ 7.3)
$maxSal = 10;
$str = <<<SQL
SELECT *
A partir do PHP 7.3 o
FROM Funcionario identificador de
WHERE salario > $maxSal and fechamento pode ser
codDepart = 'Vendas' indentado
SQL;
echo $str;
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 28
String Heredoc (PHP ≥ 7.3)
$maxSal = 10;
$str = <<<SQL
SELECT *
FROM Funcionario
WHERE salario > $maxSal and
codDepart = 'Vendas'
SQL;
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 29
Funções
function nomeDaFuncao($par1, $par2, ...) {
// operações
// operações
// operações
}
Forma geral
Função de exemplo
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 30
Funções
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 31
Passando Argumentos por Referência
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 32
Variáveis Globais
<?php
$x = 10; // $x é global
function exemplo() {
echo $x; // erro
global $x;
echo $x; // 10
}
?>
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 33
Array Indexado
$n = count($pares);
for ($i = 0; $i < $n; $i++) { Percorrento array
A função count retorna o
echo $pares[$i]; número de elementos
};
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 34
Array Indexado
$pares = [];
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 35
Percorrendo Array com foreach
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 36
Array Associativo
$alunos = array(
"GSI010" => "Augusto",
"GSI011" => "Camila",
"GSI012" => "Pedro"
);
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 37
Arrays Super Globais
Arrays super globais são arrays associativos especiais
que podem ser acessados de qualquer lugar
ArrayDescrição
$GLOBALS Permite acessar as variáveis globais do script
$_GET Acesso a campos de formulários submetidos com GET
$_POST Acesso a campos de formulários submetidos com POST
$_FILES Acessar a arquivos anexados a formulários
$_COOKIE Acesso a cookies enviados ao servidor
$_SESSION Acesso à variáveis de sessão
$_SERVER Informações sobre o servidor, navegador, etc.
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 38
Arrays Super Globais
Array Descrição
$_SERVER['PHP_SELF'] Nome do arquivo do script que está em execução
$_SERVER['REQUEST_METHOD'] Método da requisição HTTP utilizado para acessar a página
$_SERVER['HTTP_USER_AGENT'] Contém informações sobre o navegador
$_SERVER['REMOTE_ADDR'] Endereço IP do usuário que está acessando a página
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 39
Classes e Objetos
class Circulo
{
// Declaração de atributos.
// O modificador de acesso padrão
// é public (caso seja omitido)
private $raio = 0;
private $area = 0;
<?php
// Construtor
function __construct($raio)
$circ1 = new Circulo(5);
{
$this->raio = $raio; $circ1->mostraArea();
$this->area = 3.14*$raio*$raio;
} ?>
// Declaração de método
public function mostraArea()
{
echo $this->area;
}
}
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 40
Processando Formulários
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 41
Recebendo Formulários - Método POST
Arquivo processaForm.php
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 42
Recebendo Formulários - Método GET
<?php
$nome = $_GET["nome"];
$email = $_GET["email"];
echo "Sr. $nome, seu e-mail é $email";
?>
Arquivo processaForm.php
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 43
Formulários com Campos Vazios
<?php
Para prevenir eventuais
$nome = isset($_POST["nome"]) ? $_POST["nome"] : "";
erros causados por campos
$email = isset($_POST["email"]) ? $_POST["email"] : ""; vazios, pode-se utilizar a
echo "Sr. $nome, seu e-mail é $email"; função isset do PHP
?>
Utilizando a função isset em conjunto com operador ?
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 44
Validação dos Campos
<?php
$nome = $_POST["nome"] ?? "";
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 45
Cuidado com Ataques XSS!
<html>
<body>
<h1>Site Vulnerável à Ataques XSS</h1>
<?php
$nome = $_GET["nome"];
$email = $_GET["email"];
Cross-Site Scripting (XSS)
echo <<<HTML Ataque malicioso onde um
<table> código potencialmente
<tr> prejudicial é injetado
<td> $nome </td> utilizando a URL ou
<td> $email </td> campos de formulário
</tr>
</table>
HTML;
?>
</body>
</html>
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 46
Cuidado com Ataques XSS!
<html> htmlspecialchars
<body> Pode ser utilizada para
"sanitizar" um conteúdo
<h1>Prevenindo XSS</h1>
produzido pelo usuário,
<?php antes de inserir esse
$nome = $_GET["nome"]; conteúdo na página HTML
$email = $_GET["email"];
... htmlspecialchars converte,
$nome = htmlspecialchars($nome); por padrão:
$email = htmlspecialchars($email); < em <
echo <<<HTML > em >
<table> & em &
<tr> " em "
<td> $nome </td>
<td> $email </td> Mas Atenção: não é uma
</tr> boa prática armazenar o
conteúdo (no banco de
</table>
dados, por exemplo), após
HTML;
passar pela função
?> htmlspecialchars
...
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 47
Recebendo Parâmetros pela URL
<?php
$codigoProduto = $_GET["codProd"];
// busca pelo produto
?>
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 48
Manipulando Senhas
<?php Cadastro do Usuário
Uso da função
// o hash gerado terá 60 caracteres, mas pode aumentar password_hash do
$senhaHash = password_hash($senha, PASSWORD_DEFAULT); PHP para gerar um
hash de senha
// gravar no BD o hash da senha e não a senha seguro utilizando o
gravaNoBD($senhaHash); algoritmo BCrypt
antes de grav no BD
?>
}
?>
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 49
Redirecionando com PHP
<?php
// pagina.php
header("Location: nova-pagina.php");
exit();
?>
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 50
Uso Inadequado da Função header
<html>
<body>
<h1>Ex. de uso INADEQUADO da função header</h1>
<?php
header("Location: nova-pagina.php");
exit();
?>
</body>
</html>
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 51
include e require
▪ include e require incluem outro arquivo PHP no script
▪ Arquivo incluído pode conter variáveis, funções, classes, etc.
▪ include gera um warning em caso de falha na inclusão
▪ require gera um erro fatal e encerra o script
▪ Não são funções!
<?php
// mysqlConnection.php pode conter
// dados de conexão com o MySQL,
// por exemplo
include "mysqlConnection.php";
?>
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 52
include_once e require_once
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 53
Referências
▪ https://www.php.net/docs.php
▪ NIXON, R. Learning PHP, MySQL & JavaScript: With jQuery,
CSS & HTML5. 5. ed. O'Reilly Media, 2018
Programação para Internet Prof. Dr. Daniel A. Furtado - Proibida cópia, apropriação ou uso sem autorização de qualquer parte deste material - Lei nº 9 610/98 54