Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Baseado nos scripts de validação de CPF e validação de CNPJ do grande Fabyo, criei esse simples script, unindo as duas funções de validação no mesmo input, independente do usuario digitar os dados de CPF ou CNPJ com ponto, traço ou barra.
O script que realiza a checagem e mostra o resultado está comentado e de fácil entendimento e acredito que não haverá dúvidas http://forum.imasters.com.br/public/style_emoticons/default/graduated.gif
Quem quiser entender o algoritmo do CPF clique aqui e para entender o algoritmo do CNPJ clique aqui.
index.html
<html>
<head>
<title>Validador de CPF/CNPJ</title>
</head>
<body>
<form action="validar.php" method="POST">
Digite o CPF ou CNPJ:
<input type="text" name="cpfcnpj">
<br>
<input type="submit" value="Enviar dados!" >
</form>
</body>
</html>
cpfcnpj.php
<?php
/*
Ambas as funções foram criadas pelo Fabyo, membro do fórum do iMasters:
http-~~-//forum.imasters.com.br/index.php?/user/13485-fabyo/
Valida CPF versao 1.2
http-~~-//forum.imasters.com.br/index.php?/topic/142542-valida-cpf-versao-1-2/
Valida CNPJ
http-~~-//forum.imasters.com.br/index.php?/topic/141154-valida-cnpj/
*/
function valida_cpf($cpf){
for( $i = 0; $i < 10; $i++ ){
if ( $cpf == str_repeat( $i , 11) or !preg_match("@^[0-9]{11}$@", $cpf ) or $cpf == "12345678909" ) return false;
if ( $i < 9 ) $soma[] = $cpf{$i} * ( 10 - $i );
$soma2[] = $cpf{$i} * ( 11 - $i );
}
if(((array_sum($soma)% 11) < 2 ? 0 : 11 - ( array_sum($soma) % 11 )) != $cpf{9})return false;
return ((( array_sum($soma2)% 11 ) < 2 ? 0 : 11 - ( array_sum($soma2) % 11 )) != $cpf{10}) ? false : true;
}
function valida_cnpj( $cnpj ) {
if( strlen( $cnpj ) <> 14 or !is_numeric( $cnpj ) ){
return false;
}
$k = 6;
$soma1 = "";
$soma2 = "";
for( $i = 0; $i < 13; $i++ ){
$k = $k == 1 ? 9 : $k;
$soma2 += ( $cnpj{$i} * $k );
$k--;
if($i < 12) {
if($k == 1) {
$k = 9;
$soma1 += ( $cnpj{$i} * $k );
$k = 1;
} else {
$soma1 += ( $cnpj{$i} * $k );
}
}
}
$digito1 = $soma1 % 11 < 2 ? 0 : 11 - $soma1 % 11;
$digito2 = $soma2 % 11 < 2 ? 0 : 11 - $soma2 % 11;
return ( $cnpj{12} == $digito1 and $cnpj{13} == $digito2 );
}
?>
validar.php
<?php
//Puxamos os dados digitados no input
$cpfcnpj = $_POST["cpfcnpj"];
//Retiramos os pontos, traços e barras
$cpfcnpj2 = preg_replace( "@[./-]@", "", $cpfcnpj );
/*Contamos quantos caracteres sobrou, digitados no input.
Se tiver 14 caracteres é um CNPJ;
Se tiver 11 caracteres é um CPF;//Chamamos o arquivo cpfcnpj.php para utilizar as funções valida_cnpj ou valida_cpf
include('cpfcnpj.php');
if ($caracteres==14) {
$cnpjverificado = valida_cnpj($cpfcnpj2);
if ($cnpjverificado==1) {
echo "CNPJ valido" ; echo "CNPJ invalido" ;
}if ($caracteres==11) {
$cpfverificado = valida_cpf($cpfcnpj2);
if ($cpfverificado==1) {
echo "CPF valido" ;
} else {
echo "CPF invalido" ;
} echo "Digite corretamente o CPF/CNPJ" ;
}
}
?>Carregando comentários...