PplWare Mobile

PHP é à quinta-feira – Validação de dados introduzidos

                                    
                                

Este artigo tem mais de um ano


Autor: Pedro Pinto


  1. Mestre says:

    Muito bom!!! era isto mm que precisava. Obrigado!!

  2. César Couto says:

    function clear($var) { $var = trim($var); $var = strip_tags($var); $var = htmlspecialchars($var); return $var; }
    function clear_db($var) { $var = trim($var); $var = strip_tags($var); $var = htmlspecialchars($var); $var = (! get_magic_quotes_gpc ()) ? addslashes ($var) : $var; return $var; }
    function magic($var) { $var = trim($var); $var = strip_tags($var); $var = (!get_magic_quotes_gpc ()) ? addslashes ($var) : $var; return $var; }
    function blank($content) { $check = str_replace(” “, “”, $content); if ($check) return false; else return true; }
    function clear_slashes($var) { $var = str_replace(‘”‘,”,$var); $var = str_replace(‘\”,”,$var); return $var; }

    Esta são algumas das mini funções que uso constantemente ora no desenvolvimento de páginas web (nas administrações, formulários de contactos, etc) e também em software web desenvolvido em PHP/MYSQL/ETC.

    Uma das que uso mais é a magic e adiciono o trim para remover espaços vazios porque as vezes as pessoas fazem copy paste e deixa espaços vazios no fim ou no inicio das strings e é sempre bom limpar e a função get_magic_quotes_gpc para ver se será necessário converter ou não as slashes quando são inseridas nas base de dados.

    • Rogério says:

      Não uses o get_magic_quotes_gpc, é vulnerável a SQLInjection, usa antes o mysql_real_escape_string, foi adicionado com o propósito de substituir o get_magic_quotes_gpc, é muito mais seguro e escapa mais caracteres que o addslashes.

      Certifica-te de que o get_magic_quotes_gpc está desactivado no php.ini, não vá a porca torcer o rabo.

      Já agora, muito bom tópico, apesar de isto ser o básico das validações / seguranças que os programadores devem ter em conta quando criam as suas páginas web.

      Validações por expressões regulares, são muito mais fiáveis e seguras, pois basta haver algo na string que a expressão regular não valide, para dar logo erro.

  3. Ricardo Elias says:

    Excelente tutorial Pedro Peixoto! Parabens!


    “magic_quotes_gpc: Este recurso tornou-se OBSOLETO a partir do PHP 5.3.0 REMOVIDO do PHP 6.0.0. Confiar neste recurso é extremamente não recomendado.”
    http://www.php.net/manual/pt_BR/security.magicquotes.php

    Fiquem Bem!

  4. Pedro Pinto says:

    Parabéns Pedro pelo excelente tutorial !! PHP Rullez 🙂

  5. Carlos Martins says:

    Boas

    Desde o PHP5 que estão disponiveis filtros para limpar e validar dados.

    Para quem precisa, pode ser uma leitura interessante
    PHP Filter -> http://www.w3schools.com/php/php_ref_filter.asp

  6. Boa noite, obrigado. É bom que opinem para que saiba o qual o ruma a dar nos próximos artigos. 🙂

  7. Penso que o exemplo de validação do endereço de email não está correcto.

    A título de exemplo, pode-se aceitar, mas não usem essa expressão num sistema que necessite mesmo de validar endereços.

    • Boa noite, porque diz que não está correcta?

      • Porque logo para começar, aceita endereços que começem por um ponto, e esses não são válidos.
        Também não aceita todos os caracteres que deveria aceitar de acordo com o RFC.

        • Renato says:

          pois.. concordo com isso… este é só um exemplo de validação…
          Por falar em validação… penso que deveriam incluir um tutorial de RegEx juntamente, ou antes de falarem em validações que utilizem essa forma de expressão.

          • Certo. Existem muitas maneiras de construir uma expressão regular que valide emails ou outro tipo de dados. Normalmente todas têm falhas, e quanto menos falhas têm mais complexas ficam. O objectivo foi só mesmo exemplificar. Copiei uma expressão do site que inclui no artigo, só para emails têm la 4 ou 5. De qualquer forma podem partilhar as que vocês usam para podermos comparar. Abraço

    • DreamWave says:

      Pois aparentemente não valida um endereço de email correctamente , por exemplo nao aceitaria um email “meu+email@gmail.com” ou “email@dominio.co.uk”

      Costumo uitilizar esta função, (se o wordpress cortar alguma parte do codigo podem ver aqui http://pastebin.com/2HnGi2Kw) :

      function validEmail($email, $checkDNS=false){
      $isValid = true;
      $atIndex = strrpos($email, “@”);
      if (is_bool($atIndex) && !$atIndex){
      $isValid = false;
      } else {
      $domain = substr($email, $atIndex+1);
      $local = substr($email, 0, $atIndex);
      $localLen = strlen($local);
      $domainLen = strlen($domain);
      if ($localLen 64) {
      // local part length exceeded
      $isValid = false;
      } else if ($domainLen 255){
      // domain part length exceeded
      $isValid = false;
      } else if ($local[0] == ‘.’ || $local[$localLen-1] == ‘.’){
      // local part starts or ends with ‘.’
      $isValid = false;
      } else if (preg_match(‘/\\.\\./’, $local)){
      // local part has two consecutive dots
      $isValid = false;
      } else if (!preg_match(‘/^[A-Za-z0-9\\-\\.]+$/’, $domain)) {
      // character not valid in domain part
      $isValid = false;
      } else if (preg_match(‘/\\.\\./’, $domain)){
      // domain part has two consecutive dots
      $isValid = false;
      } else if (!preg_match(‘/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\’*+?^{}|~.-])+$/’, str_replace(“\\\\”,””,$local))){
      // character not valid in local part unless
      // local part is quoted
      if (!preg_match(‘/^”(\\\\”|[^”])+”$/’, str_replace(“\\\\”,””,$local))) {
      $isValid = false;
      }
      }
      if($checkDNS){
      if ($isValid && !(checkdnsrr($domain,”MX”) || checkdnsrr($domain,”A”))){
      // domain not found in DNS
      $isValid = false;
      }
      }
      }
      return $isValid;
      }

  8. Nilton says:

    Preciso retirar o campo data da validação vazio, alguém pode me ajudar. Passo mais detalhes no email.

Deixe um comentário

O seu endereço de email não será publicado.

You may use these HTML tags and attributes: <a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

Aviso: Todo e qualquer texto publicado na internet através deste sistema não reflete, necessariamente, a opinião deste site ou do(s) seu(s) autor(es). Os comentários publicados através deste sistema são de exclusiva e integral responsabilidade e autoria dos leitores que dele fizerem uso. A administração deste site reserva-se, desde já, no direito de excluir comentários e textos que julgar ofensivos, difamatórios, caluniosos, preconceituosos ou de alguma forma prejudiciais a terceiros. Textos de caráter promocional ou inseridos no sistema sem a devida identificação do seu autor (nome completo e endereço válido de email) também poderão ser excluídos.