professor jefferson chaves [email protected] client-side ou tecnologias...

54
Professor Jefferson Chaves [email protected] Jefferson de Oliveira Chaves

Upload: others

Post on 04-Jun-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

Professor Jefferson Chaves [email protected]

Jefferson de Oliveira Chaves

Page 2: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ Introdução ao Ambiente Cliente x Servidor;

“ Os métodos GET e POST;

“ Formulários HTML;

“ Validação de dados;

Jefferson de Oliveira Chaves

Page 3: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

Jefferson de Oliveira Chaves

Page 4: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ HTML, CSS e JavaScript (somente essas!) são tecnologias que podem ser executadas em navegador (browser);

“ A essas tecnologias damos o nome de tecnologias Client-Side ou tecnologias do lado do cliente;

Page 5: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

Cliente abre/requisita a página

Máquina Cliente com Web Browser

Navegador interpreta e executa o conteúdo do arquivo HTML, incluindo qualquer script

Page 6: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

Cliente solicita a página dinâmica

HTML concluído enviado ao cliente

Servidor Web

Máquina Cliente com Web Browser

HTML pronto para enviar

Servidor executa e interpreta o código.

Constrói o código HTML

Código HTML

Jefferson de Oliveira Chaves - IFC Araquari

Page 7: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

Então precisarei de um servidor?

Page 8: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o
Page 9: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

Servidor é um programa de computador

responsável por aceitar pedidos HTTP de

clientes, geralmente os navegadores, e servi-los

com respostas HTTP, geralmente, páginas web,

tais como documentos HTML com objetos

incluídos (imagens, etc.)

Page 10: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ O servidor Apache (ou simplesmente:

Apache) é o mais bem sucedido servidor web

livre.

“ 66% dos sites do mundo estão

hospedados em servidores Apache;

“ Seu logotipo é uma pena!

Page 11: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ O servidor disponibiliza ao cliente, qualquer

arquivo solicitado desde que esteja em

sua pasta pública!

“ Cada instalação pode dar um nome diferente para essa pasta: “ public_html

“ htdocs

“ www

Jefferson de Oliveira Chaves

Page 12: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ Isso significa que, se você pretende executar um código PHP em um navegador:

“ ele deverá estar na pasta publica de seu servidor;

“ o acesso deverá ser feito por meio do endereço do servidor, geralmente, http://localhost/ ou http://127.0.0.1/ seguido no nome do seu arquivo ou pasta.

Jefferson de Oliveira Chaves

Page 13: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o
Page 14: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ Para começar a programar em PHP para web

precisaremos de alguns pré-requisitos:

“ Ter o PHP instalado em nosso computador;

“ Pode ser baixada em: http://php.net/downloads.php

“ Ter um servidor HTTP (Apache) instalado e

rodando em nossa máquina;

“ Pode ser baixado em:

https://httpd.apache.org/download.cgi

Page 15: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ A fim de facilitar a instalação do PHP, Apache além de outras

configurações, um grupo de programadores criou o XAMPP, que é um pacote com tudo que precisamos.

“ Sua instalação é bem simples. Pode ser baixado em: https://www.apachefriends.org/pt_br/index.html

• O X significa que roda em qualquer sistema operacional;

• O A é de Apache;

• O M é o banco de dados;

• O P é de PHP;

• O P é de Pearl;

Page 16: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

‚Caixa de Ferramentas ‛ para Programação em PHP

Podemos instalar o PHP e o Apache separadamente, ou apenas instalar

o xampp, o que é altamente recomendado para iniciantes.

Page 17: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o
Page 18: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ O PHP (um acrônimo recursivo para PHP:

Hypertext Preprocessor) é uma linguagem de

programação open source (livre), de uso geral,

interpretada, muito utilizada, atuantes

no lado do servidor e especialmente adequada

para o desenvolvimento web e que pode ser

escrita dentro do HTML.

Page 19: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ O PHP é uma linguagem flexível;

“ Escrever para Desktop (terminal) e para Web (navegador).

“ <?php e ?>

“ Permite ao PHP ser incluído em vários tipos de documentos, como uma página HTML, pois tudo que está fora dessas tags é ignorado pelo interpretador do PHP.

Page 20: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o
Page 21: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

<!DOCTYPE HTML> <html lang="pt-br"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <h1>olá visitante</h1> <p>Esperamos que goste do nosso site! </p> </body> </html>

Page 22: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

<!DOCTYPE HTML> <html lang="pt-br"> <head> <meta charset="UTF-8"> <title></title> </head> <body>

<h1><?php echo $titulo; ?></h1> <p><?php echo $texto ; ?></p> </body> </html>

Page 23: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

Jefferson de Oliveira Chaves

Page 24: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ Existem variáveis pré-definidas no PHP,

definidas como superglobais.

“ Isso significa dizer que elas estão disponível

em todos os escopos da aplicação. Elas

sempre existem!

“ Veremos duas: $_GET e $_POST;

Jefferson de Oliveira Chaves

Page 25: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ SUPERGLOBAL $_GET

“ Escrita toda em maiúscula: ela é especial!

“ Um array associativo de variáveis passadas para o script atual via o método HTTP GET;

“ Obtém os dados expostos na URL;

“ O envio repetidas vezes não tem efeitos colaterais;

“ Os dados podem ser usados para por nos favoritos;

Jefferson de Oliveira Chaves

Page 26: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ SUPERGLOBAL $_GET “ Os parâmetros disponíveis na URL tem seu

início indicado pelo sinal de interrogação (?);

“ Cada parâmetro vai ser formado pelo par

chave = valor;

“ Outros parâmetros podem ser adicionados

com o uso do símbolo & ;

Jefferson de Oliveira Chaves

Page 27: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

Jefferson de Oliveira Chaves

Page 28: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ Para obter os dados disponíveis na URL

usamos a variável $_GET;

“ O conteúdo de cada parâmetro visível na

URL fica disponível como índice de GET;

Jefferson de Oliveira Chaves

Page 29: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ O conteúdo de cada parâmetro visível na

URL fica disponível como índice de GET;

Jefferson de Oliveira Chaves

// ser quisermos testar antes: print_r($_GET);

$professor = $_GET[ “prof” ];

echo $professor; // O resultado será Katia

Page 30: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ Podemos enviar dados para a URL por meio de:

“ Links: <a href=‚endereco?parametro=valor‛></a>

“ Formulários, veremos com detalhes no próximo tópico;

Jefferson de Oliveira Chaves

Page 31: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ SUPERGLOBAIS $_POST

“ Um array associativo de variáveis passadas para o

script atual via o método HTTP POST;

“ Os dados ficam encapsulados dentro do corpo da

mensagem;

“ O usuário não “enxerga os parâmetros” enviados;

“ Normalmente usado em formulários de cadastros,

logins (envio de senhas), etc.;

Jefferson de Oliveira Chaves

Page 32: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ Geralmente os dados do tipo POST são enviados por formulários com o método POST definido;

Jefferson de Oliveira Chaves

<form method=‚POST" action="">

<input type="text" name=‚busca‛ >

<input type="submit"> </form> print $_POST[‘busca’];

Page 33: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

Jefferson de Oliveira Chaves

<?php // normalmente recebemos os dados dessa forma

$nome = $_POST['nome']; $cidade = $_POST['cidade']; $endereco = $_POST['endereco']; echo $nome; echo $cidade; echo $endereco;

Page 34: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ É útil testar os dados das variáveis $_GET e $_POST

usando as funções print_r( ) e var_dump( );

“ As funções var_dump( ) e print_r( ) exibem o

conteúdo e o tipo da variável;

Jefferson de Oliveira Chaves

var_dump($_POST);

Page 35: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

Jefferson de Oliveira Chaves

Page 36: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ Como visto o PHP pode ser usado para criar

programas desktop ou para web.

“ Para programas de linha de comando, a

leitura de dados do teclado é feita pela

função fgets(STDIN);

Jefferson de Oliveira Chaves

Page 37: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ Mas quando se programa para web o cenário

é diferente e a interface entre o usuário e o

PHP é feita por meio dos formulários

HTML.

Jefferson de Oliveira Chaves

Page 38: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

Jefferson de Oliveira Chaves

<form method=" " action=" " >

<input type="text" name="nome" required />

<input type="submit" value="cadastrar" />

</form>

Page 39: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

Jefferson de Oliveira Chaves

Page 40: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ Os formulários HTML são a principal forma de

entrada para qualquer aplicação para web.

“ Cadastros, logins e buscas são exemplos de

usos de formulários;

“ O google.com é um site que possui um único

campo de formulário e nada mais.

Jefferson de Oliveira Chaves

Page 41: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ O formulário deve conter os atributos:

• Method: define a forma com que os dados serão enviados. São aceitos os métodos GET e POST.

• Action: define qual arquivos processará o conteúdo do formulário;

Jefferson de Oliveira Chaves

Page 42: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ O principal elemento de um formulário é o input (entrada);

“ Os formulários possuem diferentes tipos de input’s (entradas de dados) como:

“ caixa de texto (type text);

“ caixa de senha (type password);

“ botão de enviar (type submit);

Jefferson de Oliveira Chaves

Page 43: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ Para mudar o tipo de input basta dizer qual o tipo desejado no campo type:

Jefferson de Oliveira Chaves

<form method=‚POST‛> <input type="text" name=‚nome‛ > <input type=‚number" name=‚idade‛ > <input type="submit"> </form> print $_POST[‘name’];

Page 44: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ O HTML5 trouxe um número expressivo de novos campos: color, date, datetime, datetime-local, email, month, number, range, search, tel, time, url, week, entre outros.

Jefferson de Oliveira Chaves

Dica: Saiba mais sobre os formulários em http://www.w3schools.com/html/html_form_input_types.asp. Pesquise sobre como usar expressões regulares em campos de formulários

Page 45: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ O parâmetro action em formulários:

“ Define para onde os dados do formulários

serão enviados quando os dados forem

submetidos;

“ Se o parâmetro action estiver vazio, o

formulário enviará os dados para a própria

página;

Jefferson de Oliveira Chaves

Page 46: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ O parâmetro action:

Jefferson de Oliveira Chaves

<form method=‚POST" action=‚valida.php">

<input type="text" name=‚busca‛ > <input type="submit"> </form> print $_POST[‘name’];

Page 47: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

Jefferson de Oliveira Chaves

Page 48: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ Obter os dados direto de formulários, e uma

prática inadequada e sujeito a erros;

“ Os dados não são tratados (higienizados, filtrados);

“ Sql Injection;

“ Já conhecemos as seguintes práticas:

“ $id = (int) $_GET['id']; #operacao cast

“ $cidade =trim ($_GET['id']); #elimina caracteres indesejados

Jefferson de Oliveira Chaves

Page 49: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ O recomendados é usarmos a função filter_input:

“ filter_input(INPUT_GET, ‘variavel', SANITIZE_SPECIAL_CHARS)

“ filter_input(INPUT_GET, variavel ', FILTER_VALIDATE_INT);

“ Um caso conhecido (link)

Jefferson de Oliveira Chaves

Page 50: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ O método isset( );

“ Is set? (está definida?)

“ Verifica se a variável foi definida.

“ Retorna TRUE se var existe; FALSE caso

contrário.

Jefferson de Oliveira Chaves

Page 51: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ O método empty( );

“ Verifica se a variável está vazia.

“ Retorna TRUE se estiver vazia; FALSE caso a

variável testada esteja preenchida.

Jefferson de Oliveira Chaves

Page 52: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

“ Os métodos is_:

“ O método is_bool ($variavel );

“ O método is_int ($variavel );

“ O método is_float ($variavel );

“ O método is_numeric ($variavel );

“ O método is_string ($variavel );

“ O método is_null ($variavel );

Jefferson de Oliveira Chaves

Page 53: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

Jefferson de Oliveira Chaves

Page 54: Professor Jefferson Chaves jefferson.chaves@ifc-araquari.edutecnologias Client-Side ou tecnologias do lado do cliente; Cliente abre/requisita a página Máquina Cliente ... para o

1. Crie um formulário para cadastro de clientes, contendo os campos:

Nome(text), a idade(number), o salário(?), e um para informar se o cliente é maior de idade(?)

2. Processe os dados em um arquivo chamado processa.php

3. Indique se o TIPO DE DADO de cada campo é uma texto ou numérico.

4. Se algum campo não for preenchido, exiba a mensagem: ‚nenhum campo pode ficar em branco‛

Jefferson de Oliveira Chaves