quinta-feira, 28 de março de 2013

Erro de MSVCR100.DLL na instalação do WampServer

Por vezes na instalação do WampServer em Windows deparamo-nos com um erro, ou melhor, com a falta do ficheiro msvcr100.dll.

Este erro deve-se a isso mesmo... falra do ficheiro msvcr100.dll que o Apache precisa para ser executado no Windows.
Esta é uma biblioteca do Visual C++ 2010 SP1 Redistributable Package que naõ deverá estar instalado no sistema.

Para resolver o problema masta azer o download do executável Visual C++ 2010 SP1 Redistributable Package e o probloma está solucionado.

sexta-feira, 1 de março de 2013

Validação do NIF com PHP

Algoritmo:
  1. O NIF tem que ter 9 dígitos;
  2. O primeiro dígito tem que ser 1, 2, 5, 6, 8 ou 9;
  3. A soma de controle é dada por: 9 x d1 + 8 x d2 + 7 x d3 + 6 x d4 + 5 x d5 + 4 x d6 + 3 x d7 + 2 x d8 + (1 x) d9 a soma das multiplicações (10 - i) x di (com i de 1 a 9) tem que ser múltipla de 11 (congruente com o módulo 11, isto é, dê resto 0 quando dividida por 11). d1 é o dígito mais à esquerda, e d9 o digito mais à direita (digito de controle).
  4. d9, em alguns casos, precisava de ter o valor 10, para que a soma de controle fosse divisível por 11. Neste caso d9 tomará o valor 0.
Código:

function validateNif($nif){

    if(!is_numeric($nif) || strlen($nif) != 9) return false;
   
    $nifArray = str_split($nif);
   
    if($nifArray[0] != 1 && $nifArray[0] != 2 &&  $nifArray[0] != 5 && $nifArray[0] != 6 && $nifArray[0] != 8 && $nifArray[0] != 9)
        return false;
   
    $checkbit = $nifArray[0] * 9;
   
    for($i=2; $i <=8; $i++){
        $checkbit += $nif[$i-1] * (10 - $i);
    }
   
    $checkbit = 11 - ($checkbit % 11);
   
    if($checkbit >= 10) $checkbit=0;
   
    if($nif[8] == $checkbit) return true;
   
    echo "Invalid NIF";
    return false;
}