• Nenhum resultado encontrado

Programação para Internet

N/A
N/A
Protected

Academic year: 2021

Share "Programação para Internet"

Copied!
56
0
0

Texto

(1)

Programação para Internet

Curso de Sistemas de Informação

Prof. Dr. Daniel A. Furtado

Módulo 7

Introdução à Web Dinâmica com PHP

Universidade Federal de Uberlândia

Faculdade de Computação

(2)

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

(3)
(4)

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.

(5)

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

(6)

De acordo com o portal W3Techs.com, PHP é utilizada por

82.6% de todos os websites cuja linguagem do lado servidor

é conhecida.

(7)

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

(8)

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.

(9)

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

(10)

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.

(11)

Criação de uma Conta em Servidor de

Hospedagem Web com suporte a PHP

(12)

Crie um conta gratuita no awardspace.com

(13)

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

(14)

Exemplo de Serviço de Hospedagem

1

2

(15)

Utilizando o WinSCP para Enviar os

Arquivos para o Servidor

(16)

Pode-se utilizar um programa de FTP gratuito para enviar

arquivos para o servidor;

O WinSCP é um exemplo:

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

Alguns servidores só aceitam o protocolo FTP

(17)

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.

(18)

É 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

Envio dos arquivos ao servidor web

Marque esta opção para os arquivos alterados localmente sejam automaticamente reenviados para o servidor

(19)

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>

(20)

Primeira Página Dinâmica

Utilizando o PHP

(21)

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

(22)

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

Linguagem PHP – Exemplo 1

<!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>

(23)

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>

(24)

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

(25)
(26)

Comentários em PHP podem ser inseridos de maneira

semelhante às outras linguagens de programação:

Comentários em PHP

<!DOCTYPE html>

<html>

<body>

<h1>

Primeira página PHP

</h1>

<?php

// comentário de linha

/* comentário de

bloco */

?>

</body>

</html>

</html>

(27)

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

(28)

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

<?php

$x = 10;

$y = 2.5;

$msg = "

um texto qualquer

"

;

echo

$msg, $x, $y;

?>

(29)

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.

(30)

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

<?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 .

(31)

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 caractere 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.

(32)

Estruturas Condicionais e de Repetição

do

{

// operações

// operações

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;

}

(33)

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

}

(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

(35)

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;

(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:

(37)

Uma forma de definir e inicializar um array em PHP é utilizando o

construtor array, como em:

$estados = array('MG', 'SP', 'RJ');

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

}

?>

(38)

Um array vazio pode ser iniciado com a string vazia ‘ ‘, null ou

[]

;

Para acrescentar elementos automaticamente no final do array,

pode-se suprimir o índice, como no exemplo a seguir:

Tipos de Dados – Array Indexado

<?php

$arrayDeNumerosImpares = [];

for

($i = 1; $i < 100; $i = $i + 2)

{

arrayDeNumerosImpares

[] = $i;

// adiciona o elemento no final do array

}

(39)

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

(40)

Sintaxe:

Exemplo:

Definindo Funções

function

nomeFuncao(parâmetros) {

// operações da função

}

...

function

max($a, $b) {

if

($a > $b)

return

$a;

else

return

$b;

}

...

(41)

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

(42)

Escopo de Variáveis – Exemplo

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

;

(43)

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, do 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

(44)

Algumas entradas do array super global $_SERVER são:

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

(45)

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

(46)
(47)

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 Prof. Dr. Daniel A. Furtado 47

OBS

: os exemplos apresentados nos próximos slides são introdutórios e não

tratam aspectos de segurança do website.

(48)

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>

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

;

?>

Formulário HTML

(49)

Cross-Site Scripting (XSS)

É um tipo de ataque em que um código malicioso (HTML,

CSS, JavaScript, etc.) é injetado no web site;

Acontece geralmente quando os dados enviados para o

servidor por meio da URL ou de campos de formulário

não são devidamente validados e recodificados;

Em alguns casos também é denominado de HTML

Injection.

Prof. Dr. Daniel A. Furtado

Programação para Internet 49

(50)

Os valores vindos de campos de formulários não devem ser utilizados pelo

script PHP sem antes serem validados, pois podem conter código malicioso

Prevenindo ataques XSS

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

(51)

Prof. Dr. Daniel A. Furtado

Programação para Internet 51

Prevenindo ataques XSS

<?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 da string (caracter \ )

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

}

(52)

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

(53)

Ver exemplo disponível em:

https://www.w3schools.com/php/php_form_complete.asp

Prof. Dr. Daniel A. Furtado

Programação para Internet 53

(54)

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

(55)

Testar e estudar os exemplos anexados:

Form – Exemplo1

Form – Exemplo2

Form – XSS

Form – Envio com AJAX

(56)

www.w3schools.com

www.php.net

www.phpbestpractices.org

www.phptherightway.com

Referências

Documentos relacionados

O trabalho de Stern (1997) mostrou que mães deprimidas gastam menos tempo olhando, tocando e falando com seus bebês, ou seja, interagem pouco com eles, já seus filhos, por sua

Projecto Comunitário para prevenção da saúde através da Educação Ambiental do Instituto Superior Politénico Privado do Uíge (ISPPU) tem assentamento no

As cirurgias esterilizadoras foram proibidas para as mulheres de menos de 40 anos (e, mais tarde, 45 anos) que não tivessem pelo menos cinco crianças em casa. Outra lei da

Os dois trabalhos apontam para a existência de relações complexas entre sociedade brasileira do início do século XX e práticas religiosas de origem africana.Tanto o estudo de

 Em 1998, comunicação a um congresso europeu sobre O Juiz de Paz na Europa, realizado em Palermo, com o tema “O juiz de paz no sistema de direito processual português”;.  Em

A utilização de outro numeral que não seja o original da Copa São Paulo de Ciclismo, procedente de qualquer outro campeonato, torneio ou liga, implicará no impedimento da largada

História Protótipo Casos de Teste Refinamento Planning Build Geração de Massa Testes Homologação Responsável: time de QA Entradas: • Histórias; • Protótipos; • Casos

1.1 - A descrição, vagas, carga horária semanal, vencimento mensal, habilitação mínima e tipos de provas do cargo objeto do Concurso Público n.º 001/2013, são os descritos no