• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Drone

[PHP] Validar BI e NIF

39 mensagens neste tópico

Bem fiz este script já a algum bom tempo para um site que fiz!... penso que seja util deixo aqui para voces usarem ;)

Na altura tinha feito só para detectar o BI qualquer das maneiras tive a ler hoje uma pagina sobre isto (por isso que me lembrei deste script e decidir colocar aqui) e dizem que este calculo também serve para o NIF, eu exprimentei com o meu e deu lol.

Bem fica aqui uma demo: http://upgaming-hq.com/drone/bi.php

EDIT: atenção a 2ª caixa de texto é para introduzir o algarismo que se encontra ao lado do número de BI (aquele algarismo que por muitos é conhecido pelo número de pessoas que tem o mesmo nome que o nosso, mas não não é.. serve mesmo para verificação).

EDIT 2: Para testar com o NIF introduzem os 8 primeiros algarismos na 1ª box e o ultimo na 2ª.

<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>
<?
if ($_POST) {
	$nr_bi = $_POST['bi'];

	while (strlen($nr_bi) < 8) {
		$nr_bi = "0" . $nr_bi;
	}

	$nr_bi .= $_POST['bi2'];

	echo $nr_bi;

	$calc = 9 * $nr_bi[0] + 8 * $nr_bi[1] + 7 * $nr_bi[2] + 6 * $nr_bi[3] + 5 * $nr_bi[4] + 4 * $nr_bi[5] + 3 * $nr_bi[6] + 2 * $nr_bi[7] + $nr_bi[8];
	$calc = $calc % 11;

	if ((int)$calc == 0) {
		echo " (verdadeiro)";
	} else {
		echo " (falso)";			
	}
}

?>

1

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim senhor... Eu testei e também deu comigo. Antes tinha testado com o meu último número, alterei-o para 2 em vez de 3 e deu que estava errada. :thumbsup:

Não conhecia era a forma de calcular isso.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Também testei o meu BI e NIF e deu, depois inseri um numero à sorte e não deu

Muito bom, sim sr

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

inseri os dados correctos e nao deu... será que sou fake?(ja nao é o 1º sistema que m diz isso)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

inseri os dados correctos e nao deu... será que sou fake?(ja nao é o 1º sistema que m diz isso)

Deixa-me adivinhar, tens um 0 no final , naquele quadradinho único certo ???

Quem implementou isso em Portugal foi um matemático, mas o senhor enganou-se nos cálculos, anda aí um tópico por aí.

edit :

http://www.mat.uc.pt/~picado/SistIdent/mistBI.html

Boa Leitura!  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tenho xD LOL!

pois,enganou-se e eu que m lixe XD

Deves ter crescido assim como eu a pensar " não há ninguem com o meu nome " LOL

cá em casa toda a gente defende a teoria do " ah, eu tenho x pessoas com o meu nome"

Mas nunca ninguem se lembrou de pensar que todos os dias nascem pessoas ? ou seja, enquanto não renovares o teu BI vai existir sempre o mesmo numero de pessoas com o mesmo nome, ROFTLOL!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

claro k nascem e têm nomes igual obvio! so k eu como nao sabia o k era, e eu perguntei e disseram que era das pessoas com o nº igual, eu mais pikeno, comi XD

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tenho xD LOL!

pois,enganou-se e eu que m lixe XD

Deves ter crescido assim como eu a pensar " não há ninguem com o meu nome " LOL

cá em casa toda a gente defende a teoria do " ah, eu tenho x pessoas com o meu nome"

Mas nunca ninguem se lembrou de pensar que todos os dias nascem pessoas ? ou seja, enquanto não renovares o teu BI vai existir sempre o mesmo numero de pessoas com o mesmo nome, ROFTLOL!

ROTFLOL. :-[

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nunca percebi a cena do ROTFLOL... "lol" nao xega?:S

não. ROTFLOL = roll(ing) on the floor laughing out loud
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hummm eu acho que se o numero de confirmação for 0 e eu substitui-lo por 10 acho que fica a funcionar, (por 10 ou por 1)

quem tiver o numero de confirmação 0 exprimente fazer esta conta à manapula:

9 * 1º + 8 * 2º + 7 * 3º + 6 * 4º + 5 * 5º + 4 * 6º + 3 * 7º + 2 * 8º + nr_de_confirmacao (aqui colocam 10 ou 1)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Drone:

Como é sabido o número de controlo do BI quando é 0, pode de facto ser o 10. Isto acontece grosso modo em 50% dos casos.

No entanto essa correcção já foi introduzida no programa. Acho por isso estranho o que acontece com o BI do Psiico: se calhar no caso dele, o manga de alpaca que lhe tratou do BI, não seguiu o algoritmo oficial e por isso o número é manhoso.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Drone:

Como é sabido o número de controlo do BI quando é 0, pode de facto ser o 10. Isto acontece grosso modo em 50% dos casos.

No entanto essa correcção já foi introduzida no programa. Acho por isso estranho o que acontece com o BI do Psiico: se calhar no caso dele, o manga de alpaca que lhe tratou do BI, não seguiu o algoritmo oficial e por isso o número é manhoso.

porque é que tenho sempre coisas manhosas?? porra! kerem-me é tirar a nacionalidade portuguesa!!!!!!!!! XD ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem.... par acabar com os fantasmas até porque mesmo neste tópico já se disse muita coisa falsa, aqui vai a explicação, mas primeiro vamos aos fantasmas:

1. Esse algarismo não indica o numero de pessoas com o mesmo nome. Essa afirmação é falsa e não tem qualquer fundamento.

2. Isso não foi "inventado por um matemático" que praí anda nem nada diiso, é a simples aplicaçao de um sistema de controlo, bem simples por sinal, de erros tal como é feito nos numeros de contas bancarias, ISBN, numeros de controlo de stoks, etc etc

3.Ninguem se "enganou nos cálculos" como foi dito por aí.

Agora a explicação:

Esse digito é usado numa implementação do algoritmo de controlo de erros que o drone usou. A implementação dele é um exemplo de quao simples o sistema é.

Agora, onde este sistema falha é no seguinte:

Esse digito corresponde ao resto da divisao por 11 da soma pesada de cada algarismo do numero. A razão por ser 11 é porque este tipo de algoritmo requere que a divisao final seja por um nuero primo para evitar ambiguidades com submultiplos. Escolheu-se o 11 porque era proximo de de 10 ( que é o numero de algarismos que existem na base de 10 ) e porque permitia, dado o comprimento do numero do BI, indicar falhas em qualquer algarismo ou na troca de dois adjacentes. Quando maior for o número escolhido, mais erros se controlam, 11 era a escolha indicada neste caso. Ora, a divisão inteira por 11 pode ter como resto 11 valores diferentes:

0,1,2,....,10

Na altura, como ainda se usavam máquinas de escrever e outros equipamentos relativamente limitativos alguem teve a brilhante ( brilhantemente estúpida ) ideia:

"ah... nao faz mal... quando o resto for 10 poe-se tambem um zero para não ter que estar  a por uma letra"

Moral da historia, se um BI um zero nesse quadradito não se sabe se esse zero corresponde a zero ou a 10. Então não se pode tirar nenhuma conclusão em relação a se o numero está correcto ou não. Isto pode nao parecer muito grave, mas um sistema destes funcionar só para alguns casos é o mesmo que não funcionar, ou seja, não se pode confiar neste sistema de qualquer das formas, por isso esse numero não serve para nada.

Actualmente acho que nao atriuem BIs com numero cujo digito de controlo seja um zero, mas... e os que já têm um zero?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

devia-se alterar o titulo deste tópico de Detectar para Validar

é mais correcto

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

inseri os dados correctos e nao deu... será que sou fake?(ja nao é o 1º sistema que m diz isso)

Deixa-me adivinhar, tens um 0 no final , naquele quadradinho único certo ???

Quem implementou isso em Portugal foi um matemático, mas o senhor enganou-se nos cálculos, anda aí um tópico por aí.

edit :

http://www.mat.uc.pt/~picado/SistIdent/mistBI.html

Boa Leitura!  :)

Esse artigo foi escrito por um professor que está actualmente a dar aulas de calculo ao meu curso :)

Ele tem um livro chamado, se não estou em erro, "O mistério do Bilhete de Identidade".

E quem cometeu o erro não foi o matemático, mas sim um funcionário das finanças. O que o matemático constatou foi que existia um erro, porque o funcionário ignorante decidiu substituir os X por 0.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esse artigo foi escrito por um professor que está actualmente a dar aulas de calculo ao meu curso :)

Ele tem um livro chamado, se não estou em erro, "O mistério do Bilhete de Identidade".

Tenho esse livro. Foi uma leitura interessante.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O prefessor cham-se Jorge Buescu e é actualmente professor no Instituto Superior Técnico. Esse livro, e o outro do mesmo autor. São dos meus livros favoritos.

O livro chama-se "O mistério do bilhete de identidade e outras histórias" e é uma compilação de crónicas que foram inicialmente publicadas, uma em cada número da revista da ordem dos engenheiros.

Quanto ao sucessor desse título tambem já o li mas não me lembro do nome :)

Entre outras coisas esses livros desmistificam muitos mítos como os referntes a este número e explicam porque é que o o sporting não 'podia' ser campeão duas vezes seguidas.

xbrunox, não foi um matemático nem um funcionário. Foi mesmo resultado de estupidez colectiva. Como está explicado no meu post anterior, isto é um procedimento muito simples usado nas caixas dos supermercados, nos bancos, nas bibliotecas, etc. Não é um algoritmo complexo cujo erro foi descoberto por um matemático super-inteligente.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O erro não foi cometido no algoritmo, mas sim na utilização dos dados fornecidos pelo algoritmo

"Ora, muito provavelmente alguma mente burocrática da Direcção-Geral dos Registos e Notariado deve ter achado muito desagradável que alguém visse um "X" escrito à frente do seu número de BI, enquanto que outras pessoas tinham apenas um algarismo. Talvez pudesse ser considerado politicamente incorrecto… e a pessoa pudesse pensar que isso teria um significado estranho… talvez cadastro? Ficha no SIS?

Para abreviar: alguém no Ministério da Justiça, na sua reconfortante ignorância matemática sobre códigos, teve a brilhante ideia de substituir o dígito de controle X, quando ocorresse, por 0. Ou seja, quando 0 ocorre como dígito de controle, pode ter na realidade dois valores: 0 ou 10! Ou seja, em metade dos casos em que ocorre o 0 (como no caso do Prof. Picado), esse dígito está errado. Ou seja, o próprio Arquivo de Identificação emite um BI cujo número, se controlado pelo seu algoritmo, estaria errado."

era a isto que me estava a referir.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O prefessor cham-se Jorge Buescu e é actualmente professor no Instituto Superior Técnico.

Olha, o meu stor de Cálculo  :) :) Mas então ele também dá aulas na Faculdade de Ciências (FCUL)...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora