Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

dtdigital

validar data Nascimento e cpf

Recommended Posts

Ola estou desenvolvendo um sistema e gostaroia de uma ajuda!

 

Quero validar a data de nascimento e cpf em algum orgam tipo receita federal mas para isso precisa ser todo em php algo usando curl.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi!

 

Para validar data, simples: chekdate(), estude-a.

 

Para validar o CPF, não precisa acessar a receita, existe um algorítimo (disponível aqui no iMasters, link na função) para isto. Eu desenvolvi uma função baseada nele, veja:

 

function validaCPF( $valor = '' ) {
# http://imasters.com.br/artigo/2410/javascript/algoritmo-do-cpf/

$doc               = textoNumeros($valor);
if ( strlen($doc) !== 11 ) return false;
$n                 = substr($doc, 0, 9); // numeros
$v                 = substr($doc, 9); // digitos verificadores do cpf

// verificador 1
$_n                = str_split($n); // matriz com numeros do cpf
$multiplicador     = 10; // multiplicador do dígito 1
$d1Total           = 0; // soma dos numeros * multiplicador
foreach ($_n as $numero) {
  $d1Total        += $numero * $multiplicador; $multiplicador--;
}
$d1Resto           = $d1Total % 11; // calculo do digito 1 baseado no resto da divisao da soma por 11
$d1                = $d1Resto >= 2 ? 11 - (int)$d1Resto : 0; // digito verificador 1

// verificador 2
$_n[]              = $d1; // acrescenta o primeiro digito verificador a matriz
$multiplicador     = 11; // multiplicador do dígito 2
$d2Total           = 0; // soma dos numeros * multiplicador
foreach ($_n as $numero) {
  $d2Total        += $numero * $multiplicador; $multiplicador--;
}
$d2Resto           = $d2Total % 11; // calculo do digito 2 baseado no resto da divisao da soma por 11
$d2                = $d2Resto >= 2 ? 11 - (int)$d2Resto : 0; // digito verificador 2

return $v == $d1.$d2 ? true : false;
}

 

Edit:

A função textoNumeros(), que esqueci de postar, desculpe, é apenas extrair apenas números do valor passado a função. Segue:

function textoNumeros( $texto = '' ) { return preg_replace('/[^0-9]/', '', trim($texto)); }
Abraço e boa sorte.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O algoritmo em questão apenas verifica se a formação do número é válida, mas não se o CPF de fato existe "no mundo real", o problema de valiar no site da receita é o captcha que existe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O algoritmo em questão apenas verifica se a formação do número é válida, mas não se o CPF de fato existe "no mundo real", o problema de valiar no site da receita é o captcha que existe.

 

De fato, me expressei mal, desculpem.

Todavia, acho que ai é mais próximo possível de uma "validação" a não ser que tenha acesso ao banco de dados da receita, rs, ou queira brincar de acessar ilegalmente a página da receita tentando "burlar" ou "quebrar" o captcha.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.