validare cnp
Moderatori: Moderatori, Start Moderator
validare cnp
am nevoie de un cod ce valideaza un cod numeric personal... daca cineva stie de asa ceva... pleaseeeee post it. multzam
- a4tech
- Senior Member
- Mesaje: 211
- Membru din: Joi Noi 03, 2005 12:55 am
- Localitate: Bucuresti
- Contact:
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
http://www.phpromania.net/forum/viewtop ... 6726#46726
Cu respect Paul !
-
bogdan_t3
- Average Member
- Mesaje: 165
- Membru din: Mar Aug 01, 2006 2:10 pm
- Localitate: cluj-napoca
- Contact:
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
- Vic
- Senior Member
- Mesaje: 213
- Membru din: Sâm Noi 12, 2005 12:04 am
- Localitate: victorstanciu.ro
- Contact:
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:
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
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
- vectorialpx
- Senior Member
- Mesaje: 4832
- Membru din: Mar Mar 01, 2005 9:48 am
- Localitate: Bucuresti
- Contact:
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
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
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>";
}
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
}
Cine este conectat
Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 31 vizitatori



