universidade federal de uberlândia faculdade de computação · programação para internet...

55
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

Upload: phungdung

Post on 11-Nov-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 2: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 3: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

Introdução ao PHP

Page 4: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 5: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 6: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 7: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 8: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 9: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 10: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 11: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

Criação de uma Conta em Servidor de Hospedagem Web com suporte a PHP

Page 12: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

Crie um conta gratuita no awardspace.com

Programação para Internet 12

Exemplo de Serviço de Hospedagem

Prof. Dr. Daniel A. Furtado

Page 13: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 14: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

Programação para Internet 14

Exemplo de Serviço de Hospedagem

1

2

Prof. Dr. Daniel A. Furtado

Crie um subdomínio gratuitamente:

Page 15: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

Utilizando o WinSCP para Enviar os Arquivos para o Servidor

Page 16: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 17: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 18: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

É 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

Page 19: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 20: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

Primeira Página Dinâmica Utilizando o PHP

Page 21: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

?>

Page 22: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 23: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 24: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 25: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

Introdução à Linguagem PHP

Page 26: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 27: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 28: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 29: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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.

?>

Page 30: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

?>

Page 31: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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.

Page 32: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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;

}

Page 33: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 34: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 35: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 36: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 37: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 38: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 39: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 40: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 41: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 42: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

?>

Page 43: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 44: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 45: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 46: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

Formulários HTML e PHP

Page 47: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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.

Page 48: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 49: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 50: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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.

Page 51: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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 &lt;

$dado = htmlspecialchars($dado);

return $dado;

}

?>

Page 52: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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>

Page 53: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 54: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

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

Page 55: Universidade Federal de Uberlândia Faculdade de Computação · Programação para Internet Módulo 7 Introdução à Web Dinâmica com PHP Prof. Dr. Daniel A. Furtado Universidade

www.w3schools.com

www.php.net

www.phpbestpractices.org

www.phptherightway.com

Programação para Internet 55

Referências

Prof. Dr. Daniel A. Furtado