Ferramentas de Utilizador

Ferramentas de Site


dev_web:php:snippet:validarbi-nif

Validar BI e NIF

Como funciona a validação dos BIs e NIFs?

Suponhamos que o nosso BI é 8074662-4 e onde o último 4 é o algarismo mistério (ou algarismo de controlo). Para validar, multiplicamos o último algarismo por 1 (4x1), o penúltimo por 2 (2x2), e assim sucessivamente. Somamos os valores obtidos (neste caso 176) e calculamos o resto da divisão inteira por 11. Se o resultado for diferente de 0, o número é inválido. O mesmo se aplica aos NIFs (caso em que o último algarismo é o algarismo de controlo). Existe uma excepção para o caso em que o algarismo de controlo é o 0, pois por vezes este é usado para representar o valor 10. Neste caso, caso o resto da divisão inteira não seja 0, é necessário repetir o processo usando o valor 10 em vez do último algarismo.

Código

<?php
function binif_isvalid($nr){
   while (strlen($nr) < 9) {
      $nr = "0" . $nr;
   }
 
   $calc = 9 * $nr[0] + 8 * $nr[1] + 7 * $nr[2] + 6 * $nr[3] + 5 * $nr[4] + 4 * $nr[5] + 3 * $nr[6] + 2 * $nr[7] + $nr[8];
 
   if ($calc % 11 === 0) {
      return true;
   }
   else if($nr[8] === 0 && ($calc + 10) % 11 === 0) {
      return true;
   }
   else {
      return false;
   }
}

Exemplo de uso

<form action="" method="POST" enctype="multipart/form-data" name="form1">
	<input type="text" name="bi" maxlength="8" size="10" />
	<input type="text" name="bi2" maxlength="1" size="2" />
	<input type="submit" name="submit" />
</form>
<?php
if(binif_isvalid($_POST['bi'].$_POST['bi2'])){
    echo "BI válido";
}else{
    echo "BI inválido... Verifique se não se enganou a escrever";
}
Tópico de discussão no fórum: Validar BI e NIF
, ,
dev_web/php/snippet/validarbi-nif.txt · Esta página foi modificada pela última vez em: 2018/05/14 21:37 (Edição externa)