Programação para Internet
Módulo 7
Introdução à Web Dinâmica com PHP
Prof. Dr. Daniel A. Furtado
Universidade Federal de Uberlândia Faculdade de Computação
1. Motivação e Introdução ao PHP
2. Criação de uma conta em servidor de hospedagem Web com PHP
3. Primeira página Web utilizando PHP
4. Introdução à Linguagem PHP
5. Formulários HTML com PHP
Programação para Internet 2
Conteúdo
Prof. Dr. Daniel A. Furtado
Introdução ao PHP
PHP é uma linguagem de script utilizada no desenvolvimento de páginas Web interativas e dinâmicas;
Scripts em PHP são executados no lado do servidor, diferentemente daqueles em JavaScript, que rodam no lado do cliente (navegador);
PHP é um acrônimo recursivo para PHP: Hypertext Preprocessor.
Programação para Internet 4
Linguagem PHP – Introdução
Prof. Dr. Daniel A. Furtado
Por que PHP? PHP pode ser executado em várias plataformas (Windows,
Linux, Unix, Mac OS X, etc.);
PHP é compatível com quase todos os servidores Web atuais
(Apache, IIS, etc.);
PHP suporta vários SGBDs;
PHP é gratuito;
PHP é fácil de aprender e é executado de maneira eficiente
no servidor.
Programação para Internet 5
Linguagem PHP – Introdução
Prof. Dr. Daniel A. Furtado
De acordo com o portal W3Techs.com, PHP é utilizada por 83,6% de todos os websites cuja linguagem do lado servidor é conhecida.
Prof. Dr. Daniel A. Furtado Programação para Internet 6
Linguagem PHP – Motivação
De acordo com o W3Techs, PHP é a linguagem server-side mais popular;
Entretanto, Java é a linguagem mais utilizada por websites com alto tráfego.
Programação para Internet 7
Linguagem PHP – Motivação
Prof. Dr. Daniel A. Furtado
O que pode ser feito com PHP?
• Gerar conteúdo de página dinamicamente;
• Manipular arquivos no servidor;
• Receber, validar e manipular dados de formulários;
• Enviar e receber cookies;
• Adicionar, atualizar ou remover dados em banco de dados;
• Criptografar dados;
• Controle de acesso, etc.
Programação para Internet 8
Linguagem PHP – Introdução
Prof. Dr. Daniel A. Furtado
Para utilizar o PHP há basicamente duas opções:
1. Utilizar um serviço de hospedagem Web (web host) com suporte a
PHP (há serviços gratuitos e pagos disponíveis); ou
2. Instalar e configurar um servidor Web com suporte a PHP no próprio
computador:
A instalação manual geralmente envolve três etapas:
Instalar e configurar um servidor Web (como o Apache HTTP);
Instalar e configurar o PHP;
Instalar e configurar um SGBD (como o MySQL).
Também é possível instalar todos os recursos por meio de um pacote de
instalação como o WAMP (Windows, Apache, MySQL and PHP)
http://www.wampserver.com/en/
Programação para Internet 9
Linguagem PHP – Introdução
Prof. Dr. Daniel A. Furtado
Há diversos websites que oferecem o serviço de hospedagem com suporte a PHP gratuitamente;
• Entretanto, nos planos gratuitos geralmente há limitações com relação ao tamanho do website, limite de tráfego e anúncios;
Exemplos:
• www.awardspace.com
• www.freehostia.com
• www.freehosting.com
Para realização dos exercícios de aula e atividades extraclasse, recomenda-se o uso de um serviço de hospedagem gratuito, como o do awardspace.com.
Programação para Internet 10
Linguagem PHP – Introdução
Prof. Dr. Daniel A. Furtado
Criação de uma Conta em Servidor de Hospedagem Web com suporte a PHP
Crie um conta gratuita no awardspace.com
Programação para Internet 12
Exemplo de Serviço de Hospedagem
Prof. Dr. Daniel A. Furtado
Após criação da conta, os dados de acesso são enviados para o e-mail de cadastro;
No awardspace.com, clique em login e forneça os dados necessários.
Programação para Internet 13
Exemplo de Serviço de Hospedagem
Prof. Dr. Daniel A. Furtado
Programação para Internet 14
Exemplo de Serviço de Hospedagem
1
2
Prof. Dr. Daniel A. Furtado
Crie um subdomínio gratuitamente:
Utilizando o WinSCP para Enviar os Arquivos para o Servidor
Pode-se utilizar um programa de FTP gratuito para enviar arquivos para o servidor;
O WinSCP é um exemplo:
Programação para Internet 16
Envio dos arquivos ao servidor web
Coloque o número ClientID
recebido no e-mail ao se
cadastrar no awardspace Coloque aqui o endereço completo
cadastrado como subdomínio no
awardspace.
Exemplo: fulanodetal.atwebpages.com
Prof. Dr. Daniel A. Furtado
Alguns servidores só aceitam
o protocolo FTP
Tela principal do WinSCP após login do usuário:
Programação para Internet 17
Envio dos arquivos ao servidor web
Arquivos locais do
computador Arquivos no servidor
Pasta no servidor para
armazenar os arquivos do
website vinculado ao
subdomínio cadastrado.
Prof. Dr. Daniel A. Furtado
É possível configurar o WinSCP para que os arquivos da pasta local do website sejam automaticamente enviados para o servidor sempre que forem atualizados;
Este recurso pode ser bastante útil, uma vez que evita o reenvio dos arquivos toda vez que eles são editados e alterados localmente;
Acesse Commands Synchonize, marque a opção Remote e clique em OK
Programação para Internet 18
Envio dos arquivos ao servidor web
Marque esta opção para os
arquivos alterados localmente
sejam automaticamente
reenviados para o servidor
Prof. Dr. Daniel A. Furtado
Crie um arquivo HTML simples com base no exemplo a seguir, salve-o
utilizando o nome index.html e envie para o servidor do awardspace
utilizando o WinSCP;
Em seguida, acesse a página digitando o endereço completo do website
no navegador.
Programação para Internet 19
Enviando uma Página de Teste
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<title>Minha primeira página on-line</title>
</head>
<body>
<h1> Bem vindo à minha primeira página on line! </h1>
</body>
</html>
Prof. Dr. Daniel A. Furtado
Primeira Página Dinâmica Utilizando o PHP
Arquivo PHP (.php)
Um arquivo com código PHP deve ser salvo com a extensão .php
Um arquivo PHP pode conter elementos HTML, texto, CSS, e código PHP;
O código PHP é executado no servidor, e o resultado é enviado para o navegador como um arquivo HTML;
Um script PHP começa com <?php e termina com ?>
Programação para Internet 21
Linguagem PHP – Introdução
Prof. Dr. Daniel A. Furtado
<?php
// Código PHP
?>
Envie o arquivo Anexos/ex01-hello.php para o servidor e em seguida acesse o
mesmo pelo navegador: www.enderecodoservidor/ex01-hello.php
Repare que um arquivo PHP pode conter tags HTML e código PHP;
Quando o arquivo é acessado através de um browser, o código PHP é executado no
servidor, e a saída desse código é mesclada com o restante do código HTML e enviado
para o navegador (neste exemplo utilizamos o construtor echo para tal);
Visualize o código fonte da página no navegador e observe o resultado.
Linguagem PHP – Exemplo 1
Programação para Internet 22
<!DOCTYPE html>
<html>
<body>
<h1>Primeira página dinâmica com PHP</h1>
<?php
for ($i = 0; $i < 10; $i++)
echo "<h1>Título gerado dinamicamente com PHP! </h1>\n";
?>
</body>
</html>
Prof. Dr. Daniel A. Furtado
Podemos ter diversos trechos de código PHP dentro do mesmo arquivo.
Envie o arquivo Anexos/ex02-hello.php para o servidor.
Linguagem PHP – Exemplo 2
Programação para Internet 23
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<title>Introdução ao PHP</title>
</head>
<body>
<h1>Múltiplos trechos PHP</h1>
<?php
for ($i = 0; $i < 5; $i++)
echo "<h5>Subtitulo gerado com PHP</h5>\n";
?>
<h1>Múltiplos trechos PHP</h1>
<?php
for ($i = 0; $i < 5; $i++)
echo "<h5>Outro subtitulo gerado com PHP</h5>\n";
?>
</body>
</html>
Prof. Dr. Daniel A. Furtado
Há vários editores de texto multi-linguagem que poderiam ser
utilizados para desenvolvimento com PHP;
Entretanto, neste curso recomenda-se a utilização da IDE
Eclipse for PHP Developers:
1. Acesse www.eclipse.org/downloads/packages/
2. Escolha a opção Eclipse for PHP Developers
3. Escolha o sistema operacional e clique em baixar
4. Descompacte o arquivo zip e execute o programa eclipse.exe
IDE para Desenvolvimento com PHP
Prof. Dr. Daniel A. Furtado Programação para Internet 24
Introdução à Linguagem PHP
Comentários em PHP podem ser inseridos de maneira semelhante às outras linguagens de programação:
Comentários em PHP
Programação para Internet 26
<!DOCTYPE html>
<html>
<body>
<h1>Primeira página PHP</h1>
<?php
// comentário de linha
/* comentário de
bloco */
?>
</body>
</html>
</html>
Prof. Dr. Daniel A. Furtado
PHP não é sensível à caixa (case-sensitive) com respeito às palavras reservadas, nomes de classes e funções;
Entretanto, PHP é sensível à caixa com respeito aos nomes de variáveis.
Prof. Dr. Daniel A. Furtado Programação para Internet 27
Sensibilidade à maiúsculas e minúsculas
Em PHP, uma variável começa com o símbolo $, seguido pelo
nome da variável propriamente dito;
Não há um comando para declarar uma variável; ela é declarada
no momento de sua primeira atribuição.
Declaração de Variáveis
Programação para Internet 28
<?php
$x = 10;
$y = 2.5;
$msg = "um texto qualquer";
echo $msg, $x, $y;
?>
Prof. Dr. Daniel A. Furtado
Tipos suportados:
String
Integer
Float
Boolean
Array
Object
NULL
Resource
Tipos de Dados
Prof. Dr. Daniel A. Furtado Programação para Internet 29
<?php
$x = 5; // variavel do tipo integer
$y = -6; // variavel do tipo integer
$z = 3.14; // variavel do tipo float
$str = "bla bla bla"; // variavel do tipo string
$cond = true; // variável booleana
$estados = array("MG","SP","RJ"); // vetor de strs
echo $estados[0]; // mostra o 1o elem.
echo $estados[1]; // mostra o 2o elem.
?>
echo não é considerada uma função, mas um construtor da linguagem. Logo, não é obrigatório o uso de parênteses;
Quando utilizado com aspas duplas, o conteúdo da string é avaliado e pode conter nomes de variáveis;
Se for utilizado com aspas simples, a string não será avaliada (não deve ter nomes de variáveis);
Construtor echo
Prof. Dr. Daniel A. Furtado Programação para Internet 30
<?php
$idade = 15;
$mes = 10;
echo "A idade eh $idade"; // a saída será: A idade eh 15 echo 'A idade eh $idade'; // a saída será: A idade eh $idade
// É possível separar os ‘argumentos’ por vírcula
echo $idade, $mes; // saída: 15 10
echo "Idade: ", $idade, "Mês: ", $mes; // saída: Idade: 15 Mês: 10
// Também é possível concatenar os ‘argumentos’ com o operador .
echo "Idade: " . $idade . "Mês: " . $mes; // saída: Idade: 15 Mês: 10
?>
O construtor echo também pode ser utilizado para enviar para a saída um bloco de texto (por exemplo, com conteúdo HTML) com a possibilidade de intercalar conteúdos de variáveis.
Construtor echo
Prof. Dr. Daniel A. Furtado Programação para Internet 31
<?php
echo <<<HTML
Todo este texto com múltiplas linhas será enviado
para a saída com interpolação de $variavel
Porém não deve haver nenhum espaço após <<<HTML e
nenhum outro caracter na linha do ultimo HTML, exceto o ponto-e-vírgula
HTML;
?>
Dica: O termo HTML utilizado no exemplo acima após os caracteres <<< poderia ser substituído por qualquer outro texto, como CODIGO, BLOCO, SQL, etc.
Estruturas Condicionais e de Repetição
Prof. Dr. Daniel A. Furtado Programação para Internet 32
do {
// operações
// operações
} while (expressao)
while (expressao) {
// operações
// operações
}
for ($i = 0; $i < 10; $i++){
// operações
}
if (expressão) {
// operações
}
if (expressão) {
// operações caso verdadeiro
}
else {
// operações caso falso
}
if (expressao1) {
// bloco de operações 1
}
else if (expressao2) {
// bloco de operações 2
}
else {
// bloco de operações 3
}
$cores = array("R","G","B");
foreach ($cores as $cor) {
echo $cor;
}
PHP também disponibiliza a declaração elseif
Estrutura Condicional if-elseif
Programação para Internet 33
if (expressao1) {
// ops. a serem executadas caso 'expressao1' seja verdadeira
}
elseif (expressao2) {
// ops. a serem executadas caso 'expressao2' seja verdadeira
}
elseif (expressao3) {
// ops. a serem executadas caso 'expressao3' seja verdadeira
}
else {
// ops. a serem executadas caso nenhuma expressão seja verdadeira
}
Prof. Dr. Daniel A. Furtado
Prof. Dr. Daniel A. Furtado Programação para Internet 34
Operadores Aritméticos, Relacionais e Lógicos
Operador Significado
+ Adição
- Subtração
* Multiplicação
/ Divisão
% Resto da divisão inteira (módulo)
++ Incremento
-- Decremento
** Exponenciação
Operador de concatenação: .
Operador Significado
== Comparação por igualdade
=== Comparação por igualdade, incluindo valor e tipo
!= ou <> Diferente
> Maior que
>= Maior ou igual a
< Menor que
<= Menor ou igual a
&& ou and “E” lógico
|| ou or “Ou” lógico
! Negação lógica
Operadores Aritméticos Operadores Relacionais e Lógicos
Prof. Dr. Daniel A. Furtado Programação para Internet 35
Operadores de Atribuição
Operador Significado Exemplo
= Atribuição var x = 0;
// atribui o valor 0 a x
+= Atribuição com soma var x += y;
// equivalente a: x = x + y
-= Atribuição com subtração var x -= y;
// equivalente a: x = x - y
*= Atribuição com multiplicação var x *= y;
// equivalente a: x = x * y
/= Atribuição com divisão var x /= y;
// equivalente a: x = x / y
%= Atribuição com módulo var x %= y;
// equivalente a: x = x % y
Prof. Dr. Daniel A. Furtado Programação para Internet 36
switch (expressao) {
case condicao1:
// bloco de operações
break;
case condicao1:
// bloco de operações
break;
...
case condicaoN:
// bloco de operações
break;
default:
// bloco de operações
}
Permite comparar uma expressão com diversos valores possíveis:
Estrutura Condicional switch-case
Uma forma de definir e inicializar um array em PHP é utilizando o
construtor array, como em: $estados = array('MG', 'SP', 'RJ');
Outra forma é inicializar utilizando colchetes: $pares = [2,4,6,8];
Também é possível definir um array atribuindo os elementos
diretamente às suas posições (sem definição prévia):
A função count devolve o número de elementos do array.
Tipos de Dados – Array Indexado
Programação para Internet 37
<?php
$estados[0] = 'MG';
$estados[1] = 'SP';
$estados[2] = 'RJ';
$n = count($estados);
for ($i = 0; $i < $n; $i++)
{
echo $estados[$i];
}
?>
Prof. Dr. Daniel A. Furtado
Um array vazio pode ser iniciado com [];
Para acrescentar elementos automaticamente no final do array,
pode-se suprimir o índice, como no exemplo a seguir:
Tipos de Dados – Array Indexado
Programação para Internet 38
<?php
$arrayDeNumerosImpares = [];
for ($i = 1; $i < 100; $i = $i + 2)
{
arrayDeNumerosImpares[] = $i; // adiciona o elemento no final do array
}
?>
Prof. Dr. Daniel A. Furtado
Em um array associativo é possível fornecer uma chave de
acesso (key) para cada elemento do array;
Para acessar o elemento deve-se informar a chave no lugar do
índice. Exemplo:
Tipos de Dados – Array Associativo
Programação para Internet 39
<?php
$alunos = array(
"GSI010" => "Augusto",
"GSI011" => "Camila",
"GSI005" => "Pedro"
);
echo $alunos['GSI011']; // a saída será 'Camila'
echo $alunos[0]; // ocorrerá um erro!!
?>
Prof. Dr. Daniel A. Furtado
Dica: A chave deve ser uma string ou um inteiro. O valor pode ser de qualquer tipo
Sintaxe:
Exemplo:
Definindo Funções
Programação para Internet 40
function nomeFuncao(parâmetros) {
// operações da função
}
...
function max($a, $b) {
if ($a > $b)
return $a;
else
return $b;
}
...
echo "O maior numero entre 5 e 8 eh: " . max(5,8);
Prof. Dr. Daniel A. Furtado
O escopo de uma variável é a parte do script onde a variável pode
ser acessada;
Em PHP, uma variável pode ser local ou global;
Uma variável declarada dentro de uma função tem escopo local e
pode ser acessada somente dentro da função;
Uma variável declarada fora de uma função tem escopo global e
pode ser acessada somente fora das funções (exceto se for
utilizada a palavra reservada global para realizar o acesso dentro
da função – ver próximo exemplo);
Escopo de Variáveis
Programação para Internet 41 Prof. Dr. Daniel A. Furtado
Escopo de Variáveis – Exemplo
Prof. Dr. Daniel A. Furtado Programação para Internet 42
<?php
// variavel com escopo global
$x = 5;
function Teste() {
// acessar x dentro desta função resultará em um erro
echo "<p>Variável x dentro da função: $x</p>";
// entretanto, ela pode ser acessada desta forma
global $x;
echo "<p>Variável x dentro da função (com global): $x</p>";
}
Teste();
echo "<p>Variavel x fora da função: $x</p>";
?>
O PHP disponibiliza alguns arrays associativos especiais que podem ser acessados de qualquer lugar dos scripts, sem a necessidade de fazer global $array;
Eles são chamados de arrays super globais;
Alguns desses arrays são:
Prof. Dr. Daniel A. Furtado Programação para Internet 43
Arrays Super Globais
Array Descrição
$GLOBALS Permite acessar as variáveis globais do script
$_SERVER Contém informações sobre o servidor, cliente (navegador), etc.
$_GET Utilizado para acessar os campos de formulários submetidos pelo método GET
$_POST Utilizado para acessar os campos de formulários submetidos pelo método POST
$_FILES Permite acessar os arquivos enviados como anexos de formulários
$_COOKIE Contém informações de variáveis passadas para o script via cookies HTTP
$_SESSION Contém dados de variáveis de sessão
$_ENV Contém informações sobre o ambiente de execução do PHP
Algumas entradas do array super global $_SERVER são:
Prof. Dr. Daniel A. Furtado Programação para Internet 44
Arrays Super Globais
Array Descrição $_SERVER['PHP_SELF'] Fornece o nome do arquivo do script que está executando
$_SERVER['REQUEST_METHOD'] Contém o método da requisição HTTP utilizada para acessar a página
$_SERVER['HTTP_USER_AGENT'] Contém informações sobre o navegador que está sendo utilizado para acessar a página
$_SERVER['REMOTE_ADDR'] Fornece o endereço IP do usuário que está acessando a página
Prof. Dr. Daniel A. Furtado Programação para Internet 45
Classes e Objetos
<?php
class Circulo
{
// declaração de propriedades
public $raio = 0;
public $area = 0;
// declaração de método
public function mostraArea()
{
echo $this->area;
}
// declaração de método
public function calculaArea()
{
$this->area = 3.14*$raio*$raio;
}
}
?>
<?php
$circ1 = new Circulo();
$circ1->raio = 5;
$circ1->calculaArea();
$circ1->mostraArea();
?>
Definindo uma Classe
Instanciando um objeto da classe
Formulários HTML e PHP
Formulários em HTML são frequentemente submetidos a scripts
PHP para validação, processamento e armazenamento dos
dados;
Os dados dos formulários submetidos a um script PHP podem
ser resgatados facilmente por meio dos arrays associativos
super globais $_POST e $_GET (dependendo do método
utilizado no envio);
Formulários HTML e PHP
Programação para Internet 47 Prof. Dr. Daniel A. Furtado
OBS: os exemplos apresentados nos próximos slides são introdutórios e não tratam aspectos de segurança do website.
Recebendo dados de um formulário HTML
<html>
<body>
<form action="processaForm.php" method="post">
Nome: <input type="text" name="nome"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>
</body>
</html>
Programação para Internet 48
<html>
<body>
<?php
// o array $_POST armazena os val. dos campos do formulário
// enviados pelo método post
$nome = $_POST["nome"]; // Copia o valor do array para a var. $nome
$email = $_POST["email"]; // Copia o valor do array para a var. $email
echo "Bem vindo, $nome! <br>";
echo "Seu e-mail eh: $email! <br>";
?>
</body>
</html>
Formulário HTML
Arquivo processaForm.php
Testar e estudar os exemplos anexados:
• ex03-formulario.html
• ex03-processaForm.php
• ex04-formulario.html
• ex04-processaForm.php
• ex05-novoContato.php
• ex05-mostraContatos.php
• ex05-novoContato-seguro.php
PHP e Formulários HTML
Os valores vindos de campos de formulários não devem ser utilizados
diretamente, pois podem conter código malicioso (HTML Injection)
Prof. Dr. Daniel A. Furtado Programação para Internet 50
HTML/JavaScript Injection
<html>
<body>
<?php
// A função filtraEntrada (definida no próximo slide) elimina alguns
// caracteres especiais que poderiam ser inseridos de forma maliciosa
// no campo do formulário. Assim, conseguimos prevenir algumas formas
// de ataque ao website (HTML Injection / JavaScript Injection)
if (isset($_POST["nome"])
{
$nome = filtraEntrada($_POST["nome"])
}
?>
</body>
</html>
A função isset pode ser utilizada para verificar se uma variável existe. No caso anterior, $_POST["nome"] não será criada caso o campo do formulário não seja preenchido.
Prof. Dr. Daniel A. Furtado Programação para Internet 51
HTML/JavaScript Injection <?php
// Valida uma string removendo alguns caracteres
// especiais que poderiam ser provenientes
// de ataques do tipo HTML/CSS/JavaScript Injection
function filtraEntrada($dado)
{
// remove espaços no inicio e no final da string
$dado = trim($dado);
// remove contra barras: "cobra d\'agua" vira "cobra d'agua"
$dado = stripslashes($dado);
// caracteres especiais do HTML (como < e >) são convertidos
// nos seus respectivos códigos HTML
// Por exemplo, o caracter < é convertido para <
$dado = htmlspecialchars($dado);
return $dado;
}
?>
O mesmo arquivo PHP que exibe um formulário também pode realizar o seu processamento. Neste caso, o formulário deve ser submetido para o mesmo arquivo;
Uma forma de submeter um formulário para o próprio script PHP é utilizando a variável super global $_SERVER["PHP_SELF"] no atributo action do formulário. Tal variável armazena o nome do arquivo em execução;
Para evitar ataques do tipo HTML Injection por meio da URL, utiliza-se também a função htmlspecialchars.
PHP e Formulários
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="POST">
// campos do formulário
</form>
Ver exemplo disponível em:
https://www.w3schools.com/php/php_form_complete.asp
Prof. Dr. Daniel A. Furtado Programação para Internet 53
Validação de Formulários com PHP
As declarações PHP include e require podem ser utilizadas para incluir outro arquivo PHP no script;
O arquivo sendo incluído pode conter variáveis PHP, funções, classes, etc.;
Enquanto include gera apenas um warning em caso de falha de inclusão, require gera um erro fatal e encerra o script;
Veja os exemplos anexados:
• ex08-home.php
• ex08-header.php
• ex08-footer.php
• Etc.
Prof. Dr. Daniel A. Furtado Programação para Internet 54
PHP include e require
www.w3schools.com
www.php.net
www.phpbestpractices.org
www.phptherightway.com
Programação para Internet 55
Referências
Prof. Dr. Daniel A. Furtado
Top Related