validare cnp

Secţiune dedicată începatorilor.

Moderatori: Moderatori, Start Moderator

ctmxxl
Average Member
Mesaje: 51
Membru din: Lun Ian 10, 2005 11:31 am

validare cnp

Mesajde ctmxxl » Sâm Sep 09, 2006 11:31 am

am nevoie de un cod ce valideaza un cod numeric personal... daca cineva stie de asa ceva... pleaseeeee post it. multzam



Avatar utilizator
kleampa
Senior Member
Mesaje: 2774
Membru din: Dum Iul 10, 2005 2:12 pm
Localitate: Bucuresti
Contact:

Mesajde kleampa » Sâm Sep 09, 2006 11:56 am

verifici sa aiba 13 numere
verifici ca prima cifra sa fie DOAR 1 sau 2
cifrele 4 si 5 sa nu depaseasca 12
cifrele 5 si 6 sa nu depaseasca 31
si cam atat

ctmxxl
Average Member
Mesaje: 51
Membru din: Lun Ian 10, 2005 11:31 am

Mesajde ctmxxl » Sâm Sep 09, 2006 12:00 pm

kleampa, membrule senior, multzam de raspuns.... si cum fac asta? ai poate un exemplu pe undeva. merci.

Avatar utilizator
punctweb
Senior Member
Mesaje: 509
Membru din: Mie Mar 24, 2004 3:32 pm
Contact:

Mesajde punctweb » Sâm Sep 09, 2006 12:04 pm

kleampa scrie:(...)
verifici ca prima cifra sa fie DOAR 1 sau 2
(...)


mai sunt si cu 5, 6...

Avatar utilizator
a4tech
Senior Member
Mesaje: 211
Membru din: Joi Noi 03, 2005 12:55 am
Localitate: Bucuresti
Contact:

Mesajde a4tech » Sâm Sep 09, 2006 12:05 pm

cu 5 si 6 ce sint homosexuali si lesbiene ?? :) din cite stiu eu prima cirfa dupa caz 1 sau 2 reprezinta sexul persoanei daca este 1 esti barbat daca este 2 esti femeie .. dar 5 si 6 ca prima cifra ...

http://www.phpromania.net/forum/viewtop ... 6726#46726
Cu respect Paul !

Avatar utilizator
punctweb
Senior Member
Mesaje: 509
Membru din: Mie Mar 24, 2004 3:32 pm
Contact:

Mesajde punctweb » Sâm Sep 09, 2006 1:06 pm

fiica-mea (7 luni) are CNP-ul cu 6 in fata (fiind fata...), verisorul ei (5 luni) are CNP-ul cu 5 in fata (fiind baiat...)... deci "gluma ta" se bazeaza pe lipsa de informatii...

Pirahna
Senior Member
Mesaje: 5985
Membru din: Dum Aug 22, 2004 2:04 am
Localitate: la birou
Contact:

Mesajde Pirahna » Sâm Sep 09, 2006 1:14 pm

si 3 si 4 se folosesc ?

Avatar utilizator
kleampa
Senior Member
Mesaje: 2774
Membru din: Dum Iul 10, 2005 2:12 pm
Localitate: Bucuresti
Contact:

Mesajde kleampa » Sâm Sep 09, 2006 1:15 pm

cred ca acei care sunt nascuti dupa 2000 au alt gen de cnp

bogdan_t3
Average Member
Mesaje: 165
Membru din: Mar Aug 01, 2006 2:10 pm
Localitate: cluj-napoca
Contact:

Mesajde bogdan_t3 » Sâm Sep 09, 2006 1:33 pm

Cod: Selectaţi tot

<script LANGUAGE="JavaScript">
<!--
function validareCNP(s)
{
var suma=0;
var mesaj="";
if(s.length==13)
{
suma=parseInt(s.charAt(0))*2+parseInt(s.charAt(1))*7+parseInt(s.charAt(2))*9+parseInt(s.charAt(3))*1+parseInt(s.charAt(4))*4+parseInt(s.charAt(5))*6+parseInt(s.charAt(6))*3+parseInt(s.charAt(7))*5+parseInt(s.charAt(8))*8+parseInt(s.charAt(9))*2+parseInt(s.charAt(10))*7+parseInt(s.charAt(11))*9;
suma=suma%11;
if(suma==10)
suma=1;
if(suma==parseInt(s.charAt(12)))
return true;
else{
alert("CNP invalid !!!");
return false;
}

}
else{
alert("CNP de lungime necorespunzatoare (<>13) !!! ");
return false;
}
}
-->
</SCRIPT>


se pare ca are deaface ceva si cu suma cifrelor

Avatar utilizator
Vic
Senior Member
Mesaje: 213
Membru din: Sâm Noi 12, 2005 12:04 am
Localitate: victorstanciu.ro
Contact:

Mesajde Vic » Sâm Sep 09, 2006 3:02 pm

Gandeste-te inainte daca aplicatia pe care o dezvolti este destinata si eventualilor cetateni straini. Spre exemplu basarabenii, care sunt un numar destul de mare in Romania. In cazul lor CNP-ul este cu totul altfel, si deci validarea se face altfel. Nici macar numarul de cifre nu e acelasi. Eu te sfatuiesc sa te rezumi la a verifica doar cat sa fie numeric.

carco
Senior Member
Mesaje: 2799
Membru din: Joi Mai 27, 2004 4:36 pm
Localitate: Bucuresti
Contact:

Mesajde carco » Dum Sep 10, 2006 8:23 am

Pirahna scrie:si 3 si 4 se folosesc ?

pentru cei nascuti inainte de 1900 (daca or mai fi) (prima cifra e s.e.x+secol in acelasi timp)

Pe langa validarile de "bun simt" (sa aiba 13 caractere [0-9], prima cifra sa fie 1,2,5,6, secolul (19 daca prima cifra e 1,2, 20 daca e 5,6) + aallzz sa fie o data valida), mai exista ultima cifra care este cifra de control.
Teoretic, algoritmul de formare al acestei cifre e "secret de stat", practic a fost publicat pe net (eu l-am gasit intr-o aplicatie de la casa de asigurari de sanatate (ce sa le fac daca fac programe in foxpro :) ). Din pacate nu mai stiu pe unde insa... google poate fi de un real folos.

http://forum.softpedia.com/lofiversion/ ... 27909.html

Later: acum ma vazut ca metoda de verificare a ultimei cifre este in JS-ul postat de bogdan_t3

P.S. care e pudicul care a bagat cuvantul s.e.x. la cuvinte cenzurate?
Programator cu experienta in Magento/ZF, Typo3/Flow3, Symfony, B2B, CRM, ERP, SMB... vand betoniera

kul
Senior Member
Mesaje: 332
Membru din: Vin Dec 09, 2005 3:13 pm
Localitate: cta
Contact:

Mesajde kul » Dum Sep 10, 2006 9:40 am

offtopic: carco bun venit din concediu!:)

Avatar utilizator
vectorialpx
Senior Member
Mesaje: 4832
Membru din: Mar Mar 01, 2005 9:48 am
Localitate: Bucuresti
Contact:

Mesajde vectorialpx » Dum Sep 10, 2006 2:13 pm

pentru: ctmxxl

toate astea se pot face usor cu substr($string, de_unde, lungime)

exemplu:

if(substr($cnp, 0, 1) == 1) {
// este baiat
} else if(substr($cnp, 0, 1) == 2) {
// este fata
} else if(substr($cnp, 0, 1) == 1) {
// este shmecher
} else etc...

// astea se pot face si cu case, ceva mai simplu...

la data:

$an = substr($cnp, 1, 2);
$luna = substr($cnp, 3, 2);
$zi = substr($cnp, 5, 2);

if(checkdate($luna, $zi, $an)) {
// data valida
}

// - reprezinta un comentariu

//edit//
strlen() ... sa verifici numarul de caractere (lungimea)

la restu te descurci...

//edit2//

nu recomand javascript

Avatar utilizator
KING
Junior Member
Mesaje: 41
Membru din: Mie Oct 20, 2004 6:46 pm
Localitate: Bucuresti
Contact:

Mesajde KING » Dum Sep 10, 2006 3:48 pm

Cod: Selectaţi tot

if (is_numeric($cnp)==true and strlen($cnp)==13 and (substr($cnp,0,1)==1 or substr($cnp,0,1)==2 or substr($cnp,0,1)==5 or substr($cnp,0,1)==6) and (substr($cnp,3,2)>=1 and substr($cnp,3,2)<=12) and (substr($cnp,5,2)>=1 and substr($cnp,5,2)<=31)){
echo "Accept CNP<br>";
}else{
echo "Error CNP<br>";
}

xtc62
Average Member
Mesaje: 75
Membru din: Lun Iul 31, 2006 12:41 pm
Localitate: Iasi

Mesajde xtc62 » Dum Sep 10, 2006 4:09 pm

Chiar nimeni nu indrageste regexp-urile?

Cod: Selectaţi tot

if ( ereg("(1|2)([1-9]{1}[0-9]{1})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])([0-9]{6}) ", $str ) )
{
 //ok
}
else
{
//not ok
}


Înapoi la “PHP Incepători”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 31 vizitatori