Visitantes que leram esse artigo, também visitaram:
  • Validação de Formulários – Campo E-mail
  • Algoritmo de CNPJ
  • CNPJ – Validação no Delphi
  • Algoritmo de CPF
  • Aumentando a Biblioteca – Parte I


  • Validação do CPF em PHP

    Postado por Plinio Cruz em 11 de julho de 2009 na categoria PHP, Programação, Soluções | 3 Comments to Read

    1 Estrela2 Estrela3 Estrela4 Estrela5 Estrela (1 votos, média: 5,00)
    Loading ... Loading ...

    Um dos artigos mais lidos do Clube da Informática é sobre o algortimo de validação do CPF, temos aqui no escritório essa validação em formato de função, utilizamos muito, temos em Java Script para os sistemas web e em formato de procedimento para Pascal, quando utilizamos o Delphi.

    Estamos com um dos nossos clientes do Hermes que necessita fazer um formulário para colher inscrições para seu próximo evento dentro do hotsite do seu cliente, o problema é que estamos falando de uma das maiores empresa de assistência médica do país, que utiliza servidores próprios com programação de área restrita em seu site, busca e inúmeras ferramentas.

    Para criar o menor impacto possível e agilizar o processo, nossa proposta foi a seguinte: vamos fazer todo o processo de inscrição (quatro telas) em um só arquivo de PHP, utilizando o banco de dados do nosso servidor e ainda, só utlizando o mais puro PHP, sem java script, sem AJAX, sem framework, sem nada que pudesse rivalizar ou incompatibilizar ferramentas do cliente ou as nossas próprias, ou ainda que necessitasse interação com o servidor para instalação, sendo assim enviaremos o arquivo para a empresa testado e pronto para colocação no hotsite do evento

    Uma das rotinas que precisamos é de validação do CPF, que antes usamos em Java Script para poupar tempo e processos pela Internet, uma validação em JS dentro do site, quando acionado o botão de enviar a validação ocorre sem enviar os dados, ou seja, é mais rápido. No caso proposto vamos utilizar só PHP e uma única vez em cada inscrição realizada haverá validação, então deixamos de lado a função e incomporamos de forma bem enxuta a rotina.

    Estamos tratando os dados na fonte, mesmo com o aviso de entrar só números, normalmente o usuários não prestam muito atenção nas instruções e já que vamos ter que “enviar” os dados por post e fazer a validação para retornar o resultado, vamos optar por tratar os dados, vamos fazer uma rotina para retirar sinais e espaços em branco da entrada, para evitar erros na validação e obrigar o usuário a verificar e reenviar os dados, o que aumentaria o processo e o número de vezes a interação com o trânsito de dados na internet.

          $sinais= array("/"," ",".","-",",");
          $cpf=str_replace($sinais,"",$_POST['cpf']);

    Após a verificação vamos aplicar de forma matemática e direto a validação do algoritmo do processo do artigo já apresentado aqui no site. Confira o código:

          ///////////////////////////////////////
          //Valida o CPF - Algoritmo do Clube
          ///////////////////////////////////////
              $cpf_validar=substr($cpf,0,9);
              $soma=0; $n=11;
              for ($i=0;$i<=9;$i++)
                    {
                       $n=$n-1;
                       $soma=$soma+(substr($cpf_validar,$i,1)*$n);
                    };
              $resto= $soma % 11;
              if ($resto<2) {$cpf_validar=$cpf_validar."0";} else {$cpf_validar=$cpf_validar.(11-$resto);};
              //Segunda parte da validação do CPF
              $soma=0; $n=12;
              for ($i=0;$i<=10;$i++)
                    {
                       $n=$n-1;
                       $soma=$soma+(substr($cpf_validar,$i,1)*$n);
                    };
              $resto= $soma % 11;
              if ($resto<2) {$cpf_validar=$cpf_validar."0";} else {$cpf_validar=$cpf_validar.(11-$resto);}
              if ($cpf_validar==$cpf) {$erro=1;} else {$erro=0;$mensagens="CPF Inválido";};

    As únicas obserrvações é que criamos um flag para o erro, ou seja, quando recebe “1″ está ok, caso contrário recebe “0″ e cria uma variável com a mensagem de erro. Espero que a rotina ajude a entender melhor o artigo e vice e versa. Qualquer dúvida escreva!

    abraço

    Plínio Cruz

    Cursos Online na Área de Informática

    • André G said,

      Olá, eu também fiz uma postagem sobre validação de email, só que usei um método muito funcional, que verifica se realmente o host existe.

      http://www.gasparimsat.com/index.php/21/08/2009/validacao-do-email-pelo-host-usando-php/

      Ex: A pessoa escreve email@bol.com.br, ele verifica se o host “Bol” existe.

    • Tiago said,

      Neste blog também tem um algoritmo para validar CPF.

      http://casadophp.blogspot.com/2009/11/algoritmo-para-validar-cpf.html

    • Alexandre Broggio said,

      Muito bom o script achei varios mais este foi o mais resumido dai resolvi incluir algunas coisas que tinha no meu outro script neste ai como
      1 РUma fun̤̣o para ṇo repetir alguns comandos
      2 РṆo validar se o cpf for de 00000000000 a 99999999999

      Ai vai

      $cpf = 11122233396;
      $sinais= array(“/”,” “,”.”,”-”,”,”);
      $cpf=str_replace($sinais,”",$cpf);
      $cpf_validar=substr($cpf,0,9);

      function Validate($position,$loop)
      {
      global $cpf_validar,$cpf;
      $soma=0; $n=$position;
      for ($i=0;$i<=$loop;$i++)
      {
      $n=$n-1;
      $soma+=(substr($cpf_validar,$i,1)*$n);
      };
      $resto= $soma % 11;
      if ($resto<2){$cpf_validar=$cpf_validar."0";}else{$cpf_validar=$cpf_validar.(11-$resto);};
      for($i=0;$i<=9;$i++){if($cpf == str_pad("",11,$i)){$cpf_validar = 0;}}
      return $cpf_validar;
      }#fim function

      $cpf_validar = Validate(11,9);
      $cpf_validar = Validate(12,10);

      if ($cpf_validar==$cpf) {$erro=1;$mensagens="CPF Valido";} else {$erro=0;$mensagens="CPF Invalido";};

      echo $mensagens;

      O endereço do meu Blog http://www.mapsd.com.br/blog

    Deixe seu comentário