Programação para Web I Aula 5 – Formulários GET – POST - REQUEST Entendendo os métodos GET – POST - REQUEST INTRODUÇÃO Sendo informal e direto, o HTTP – Hypertext Transfer Protocol(Protocolo de Transferência de Dados) é um protocolo ou padrão de rede implementado em cima do TCP para que browsers e servidores possam se comunicar. Um cliente HTTP: são softwares que se comunicam com servidores através do HTTP. Entendendo os métodos GET – POST - REQUEST INTRODUÇÃO Podemos dizer também que são softwares os servidores: Apache IIS IIS Micrsoft Eles precisam fazer também a comunicação entre o cliente e servidor Transmitir dados de um lado para o outro Entendendo os métodos GET – POST - REQUEST INTRODUÇÃO Essas comunicações são feitas através de 3 variáveis pré-definidas principais no PHP: $_POST[ ] $_GET[ ] $_REQUEST[ ] Entendendo os métodos GET – POST - REQUEST DIFERENÇAS ? Vamos entender a diferença entre o POST e GET, depois faremos um apanhado geral do REQUEST. Entendendo os métodos GET – POST - REQUEST DIFERENÇAS : VISIBILIDADE $_GET[ ] Uma requisição GET é enviada como string anexada a UR $_POST[ ] É encapsulada junto ao corpo da requisição HTTP e não pode ser vista. Entendendo os métodos GET – POST - REQUEST Exemplo POST Os valores das variáveis não aparecem na URL </ > </ > Entendendo os métodos GET – POST - REQUEST Exemplo GET Utilizado o mesmo exemplo: </ > Analisem que as informações estão aparecendo na URL </ > Entendendo os métodos GET – POST - REQUEST DIFERENÇAS : TAMANHO $_GET[ ] GET é feita via URL, obviamente há uma limitação no tamanho da mensagem enviada. A string não pode conter mais que 255 caracteres(embora exista diferenças entre navegadores, mas em geral o limite é 255). $_POST[ ] Não há limitações de comprimento da mensagem, já que a mesma é enviada no corpo da requisição HTTP. Entendendo os métodos GET – POST - REQUEST DIFERENÇAS : PERFORMANCE $_GET[ ] $_POST[ ] é relativamente mais rápida, já que ela é mais simples. há uma perda de tempo no encapsulamento da mensagem. Entendendo os métodos GET – POST - REQUEST DIFERENÇAS : TIPOS $_GET[ ] Já que GET é enviado via URL, então nós sabemos que ela só transporta textos. $_POST[ ] Não tem restrições, pode transportar tanto texto, como dados binários. Entendendo os métodos GET – POST - REQUEST DIFERENÇAS : FAVORITOS/BOOKMARKS $_GET[ ] Por se tratar apenas de uma URL, a requisição GET pode ser armazenada em cache, ou em um sistema de bookmark(favoritos). $_POST[ ] A mesma coisa não é possível para requisições POST. Entendendo os métodos GET – POST - REQUEST DIFERENÇAS : METÓDO PADRÃO HTML $_GET[ ] GET é o método HTML padrão. $_POST[ ] Para submeter um formulário HTML usando POST é preciso especificar no atributo “method” o valor “POST”. Entendendo os métodos GET – POST - REQUEST DIFERENÇAS : DADOS $_GET[ ] As requisições GET são limitadas ao padrão ASCII $_POST[ ] requisições POST também podem usar o atributo “enctype” com o valor “multipart/form-data”, que faz uso do padrão UCS(Universal Multiple-Octet Coded Character Set). Entendendo os métodos GET – POST - REQUEST E o REQUEST? Variáveis de requisição HTTP Um array associativo que por padrão contém informações de $_GET, $_POST and $_COOKIE. Esta é uma 'superglobal', ou global automática, variável. Isto simplismente significa que ela está disponível em todos escopos pelo script. Não há necessidade de fazer global $variable; para acessá-la dentro de uma função ou método. Entendendo os métodos GET – POST - REQUEST E o REQUEST? Resumindo, ele faz o papel de todos. Ele é mais pesado. Não há muita necessidade de utilizá-lo pois temos as var super globais $_POST, $_GET e $_COOKIE FORMULÁRIOS + PHP FORMULÁRIOS Campos Text e Textarea FORMULÁRIOS + PHP FORMULÁRIOS Campos Radio FORMULÁRIOS + PHP FORMULÁRIOS Campos Checkbox Este formulário têm múltiplas escolhas, por isso é necessário a utilização do Laço de repetição para receber todas as informações selecionadas. FORMULÁRIOS + PHP FORMULÁRIOS o isset é uma palavra reservada do php, que server para verificar se uma variável existe ou não Uma variável é destruída com unset() FORMULÁRIOS + PHP FORMULÁRIOS FORMULÁRIOS + PHP FORMULÁRIOS Campos Select Os campos select permitem tratar uma variedade de opções, onde o usuário pode selecionar apenas uma opção ou múltiplas opções FORMULÁRIOS + PHP FORMULÁRIOS FORMULÁRIOS + PHP FORMULÁRIOS Utilizando HTML5 FORMULÁRIOS + PHP FORMULÁRIOS FORMULÁRIOS + PHP FORMULÁRIOS range | Slider FORMULÁRIOS + PHP FUNÇÕES de TRATAMENTOS | VALIDAÇÕES Segundo o formulário abaixo, iremos mostrar alguns tratamentos de formulários: Criando a primeira página que irá conter o HTML Formulário FORMULÁRIOS + PHP FUNÇÕES de TRATAMENTOS | VALIDAÇÕES Após isso, iremos criar uma outra página que irá receber o conteúdo digitado no formulário Vejam que estamos trabalhando com as seguintes funções para o tratamento: FORMULÁRIOS + PHP FUNÇÕES de TRATAMENTOS | VALIDAÇÕES htmlspecialchars() transforma caracteres que sejam especiais no HTML na sua forma codificada, de forma que não seja possível injetar tags HTML ou JavaScript em sua página. O campo age (idade), por ser um número, pode-se simplesmente converterpara um integer que automaticamente eliminará qualquer letra. FORMULÁRIOS + PHP FUNÇÕES de TRATAMENTOS | VALIDAÇÕES Para tratamentos, podemos utilizar também a função FILTER filter_has_var — Verifica se a variável é de um especificado tipo existente filter_id — Retorna o ID de um dado nome de filtro filter_input_array — Obtem variáveis externas e opcionalmente as filtra filter_input — Obtem a específica variável externa pelo nome e opcionalmente a filtra filter_list — Retorna a lista de todos filtros suportados filter_var_array — Obtêm múltiplas variáveis e opcionalmente as filtra filter_var — Filtra a variável com um especificado filtro FORMULÁRIOS + PHP FUNÇÕES de TRATAMENTOS | VALIDAÇÕES Vamos começar pela última: filter_var — Filtra a variável com um especificado filtro Descrição Valor para filtrar. ID do Filtro Array associativo de opções ou disjunção binário de flags. Se o filtro aceita opções, flags podem ser providas no campo "flags" do array. Para o "callback" do filtro, o tipo callback pode ser passado FORMULÁRIOS + PHP FUNÇÕES de TRATAMENTOS | VALIDAÇÕES Exemplo Se eu mudar o email para um inválido: Vai me retornar um boolean:false FORMULÁRIOS + PHP FUNÇÕES de TRATAMENTOS | VALIDAÇÕES Lista de Filter_Validate id Descrição FILTER_VALIDATE_BOOLEAN Returns TRUE for "1", "true", "on" and "yes" Returns FALSE for "0", "false", "off" and "no" Returns NULL otherwise. FILTER_VALIDATE_EMAIL Validação de email FILTER_VALIDATE_FLOAT Float FILTER_VALIDATE_INT Inteiro FILTER_VALIDATE_IP IP FILTER_SANITIZE_STRING Remove todas as tags HTML da String FILTER_SANITIZE_SPECIAL_CHARS Remove todos os caracteres especiais FILTER_SANITIZE_NUMBER_INT Remove todos os car ilegais de números FORMULÁRIOS + PHP FUNÇÕES de TRATAMENTOS | VALIDAÇÕES Exemplos de cada um: Retorna true devido ao valor ser ‘yes’ FORMULÁRIOS + PHP FUNÇÕES de TRATAMENTOS | VALIDAÇÕES Validando um valor em float. FORMULÁRIOS + PHP FUNÇÕES de TRATAMENTOS | VALIDAÇÕES Verificando se um número é um valor inteiro FORMULÁRIOS + PHP FUNÇÕES de TRATAMENTOS | VALIDAÇÕES Verificando se um IP é válido FORMULÁRIOS + PHP FUNÇÕES de TRATAMENTOS | VALIDAÇÕES Tirando tags HTML de uma string FORMULÁRIOS + PHP FUNÇÕES de TRATAMENTOS | VALIDAÇÕES Tirando caracteres especiais do texto FORMULÁRIOS + PHP FUNÇÕES de TRATAMENTOS | VALIDAÇÕES Tirando qualquer valor que não faça parte de números e cálculos FORMULÁRIOS + PHP FUNÇÕES de TRATAMENTOS | VALIDAÇÕES Continuaremos Anexos Anexos de exmplos. INDEX.PHP Anexos Anexos de exmplos. VALIDA.PHP Anexos Anexos de exmplos. INDEX.PHP Anexos Anexos de exmplos. VALIDA.PHP Anexos Anexos de exmplos. VALIDA.PHP Anexos Anexos de exmplos. VALIDA.PHP Anexos Anexos de exmplos. VALIDA.PHP Anexos Anexos de exmplos. VALIDA.PHP Anexos Anexos de exmplos. VALIDA.PHP Anexos Anexos de exmplos. VALIDA.PHP Anexos Anexos de exmplos. VALIDA.PHP