Função php para validar CPF

Olá pessoal,

Devido ao grande sucesso que foi o post sobre a implementação de uma Função javascript para validar CPF resolvi escrever um novo artigo semelhante, porém focando na linguagem php.

Como disse no post da função js, o javascript é uma linguagem que roda em lado cliente, ou seja, no browser do usuário que está “rodando” a aplicação ou site. E o javascript hoje em dia é facilmente desabilitado nos navegadores com 2 ou 3 cliques. Esse processo pode burlar a validação do seu formulário e abrir espaço para que um CPF inválido seja inserido no banco de dados.

E é baseando-se nisso que devemos fazer uma verificação também em uma linguagem que execute no lado do servidor para que o sistema fique mais completo no quesito validação de dados.

Por isso desenvolvi uma função em php que realiza a mesma tarefa de verificação de CPFs.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
function verificaCpf($cpf){
   $s = $cpf;
   $c = substr($s, 0, 9);
   $dv = substr($s, 9, 2);
   $d1 = 0;
   $v = false;
 
    for ($i = 0; $i < 9; $i++){
        $d1 = $d1 + substr($c, $i, 1) * (10 - $i);
    }
    if($d1 == 0){
        return "CPF invalido!";
        $v = true;
    }
    $d1 = 11 - ($d1 % 11);
    if($d1 > 9){
        $d1 = 0;
    }
    if(substr($dv, 0, 1) != $d1){
        return "CPF invalido!";
        $v = true;
    }
    $d1 = $d1 * 2;
    for ($i = 0; $i < 9; $i++){
        $d1 = $d1 + substr($c, $i, 1) * (11 - $i);
    }
    $d1 = 11 - ($d1 % 11);
    if($d1 > 9){
        $d1 = 0;
    }
    if(substr($dv, 1, 1) != $d1){
        return "CPF invalido!";
        $v = true;
    }
    if(!$v){
        return "CPF valido";
    }
}

Exemplo de utilização da função verificaCpf

1
2
3
verificaCpf("11111111111"); //retorna CPF valido
 
verificaCpf("12312312312"); //retorna CPF invalido

Simples não é? Para que seu sistema fique mais robusto, utilize as duas validações, tanto php quanto javascript.

Espero ter ajudado

Abs

Siga-me no twitter: @rafaelwendel

É formado em Sistemas de Informação, pós-graduado em Sistemas de Banco de Dados e mestre em Educação com foco em Tecnologias Sociocomunitárias. Trabalha como professor de ensino técnico e tecnológico no Instituto Federal de Educação, Ciência e Tecnologia de São Paulo ministrando disciplinas nas áreas de programação, banco de dados, desenvolvimento de projetos e engenharia de software.

Posts relacionados

Comentários

  1. Olá,
    Você teria um exemplo utilizando o retorno da função em um formulario e salvando no banco?
    Com nome e cpf por exemplo, os tutorias que encontrei são iguais aos seus. Estou precisando muito, obrigado!

  2. Já vasculhei a internet e todos os tutoriais são iguais. Não tem esta parte de verificar antes de passar por todos os campos e depois salvar no banco de dados.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *