Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

Verificare CNP
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> Cod PHP
Subiectul anterior :: Subiectul următor  
Autor Mesaj
bluecrime



Data înscrierii: 21/Noi/2007
Mesaje: 87
Locație: Botosani

Trimis: Mar Sep 30, 2008 7:22 pm    Titlul subiectului: Verificare CNP  

Am terminat acum o mica colectie de functii care verifica daca un cnp este valid si extrage informatii din el.

Download:
http://www.filebox.ro/download.php?key=rgf6m7g199fuabnq

Variabile:

$cnp - Se stabileste CNP-ul care va fi verificat
$valid - Returneaza 1 daca CNP-ul este valid si 0 daca este invalid
$s.e.x - Returneaza s.e.x-ul (Fara puncte - eu le-am folosit pentru ca ma cenzureaza forumul)
$datazi - Returneaza ziua de nastere
$dataluna - Returneaza luna in care sa nascut
$dataan - Returneaza anul nasterii
$oras - Returneaza oras unde isi are domiciliu
$varsta - Returneaza varsta

Voi pune si un DEMO mai tarziu imediat ce revin acasa.

Astept parerile voastre.
Sus  
MihaiC



Data înscrierii: 14/Mai/2006
Mesaje: 1037
Locație: Navodari

Trimis: Mar Sep 30, 2008 8:41 pm    Titlul subiectului:  

lol

neinteresant :P
Sus  
40bets



Data înscrierii: 14/Aug/2008
Mesaje: 42

Trimis: Mar Sep 30, 2008 8:53 pm    Titlul subiectului:  

De ce neinteresant ? ;)) Lasa omul sa creeze , sa castige experienta .
Poate fii folosit pe la inregistrari pe situri , desi nu cred ca multi ar pune asa ceva :P

bluecrime , poate pui si codul aici sa vedem si noi ( eu nu pot accesa acel site )
Sus  
bluecrime



Data înscrierii: 21/Noi/2007
Mesaje: 87
Locație: Botosani

Trimis: Mar Sep 30, 2008 8:53 pm    Titlul subiectului:  

MihaiC a scris: lol

neinteresant :P

Poate pentru tine:)
Dar nu asteptam comentarii de genul asta...
Asi prefera comentarii la cod...
Sus  
Amenthes



Data înscrierii: 12/Dec/2005
Mesaje: 616

Trimis: Mar Sep 30, 2008 9:08 pm    Titlul subiectului:  

MihaiC a scris: lol

neinteresant :P

Publica si tu o bucata de cod si dupa aia sa faci comentarii din astea. Nici macar in gluma sa nu mai zici ce ai zis.
Sus  
bluecrime



Data înscrierii: 21/Noi/2007
Mesaje: 87
Locație: Botosani

Trimis: Mar Sep 30, 2008 9:08 pm    Titlul subiectului:  

Desigur

Cod: <?php
//Variabile
$cnp = $_GET['cnp']; //VARIABILA PRINCIPALA -> CNP-UL (II PUTETI ACORDA O VALOARE DINAMICA GEN $_GET['cnp'] sau $_POST['cnp'];
$* = *($cnp);
$datazi = dataZI($cnp);
$dataluna = dataLUNA($cnp);
$dataan = dataAN($cnp);
$oras = oras($cnp);
$varsta = varsta($cnp);
$valid = validare($cnp);
//Functii
function *($cod) { //Verifica sexul
$* = substr($cod,0,1);
$listasex = array(  "1"=>"Masculin",
               "2"=>"Feminin",
               "3"=>"Masculin",
               "4"=>"Feminin",
               "5"=>"Masculin",
               "6"=>"Feminin",
               "7"=>"Masculin",
               "8"=>"Feminin", );
return $listasex[$*];
}
function dataAN($cod) { //Verifica anul nasterii
$dataAN = substr($cod,1,2);
$* = substr($cod,0,1);
$lst = array(   "1"=>"19",
            "2"=>"19",
            "3"=>"18",
            "4"=>"18",
            "5"=>"20",
            "6"=>"20", );

return "$lst[$*]$dataAN";
}
function dataLUNA($cod) { //Verifica luna nasterii
$dataLUNA = substr($cod,-10,2);
$luna = array( "01"=>"Ianuarie",
            "02"=>"Februarie",
            "03"=>"Martie",
            "04"=>"Aprilie",
            "05"=>"Mai",
            "06"=>"Iunie",
            "07"=>"Iulie",
            "08"=>"August",
            "09"=>"Septembrie",
            "10"=>"Octombrie",
            "11"=>"Noiembrie",
            "12"=>"Decembrie", );
return $luna[$dataLUNA];
}
function dataZI($cod) { //Verifica ziua nasterii
$dataZI = substr($cod,-8,2);
return $dataZI;
}
function oras($cod) { //Verifica orasul unde are domiciliu
$oras = substr($cod,-6,2);
$oraslista = array( "01" => "Alba",
               "02" => "Arad",
               "03"=>"Arges",
               "04"=>"Bacau",
               "05"=>"Bihor",
               "06"=>"Bistrita-Nasaud",
               "07"=>"Botosani",
               "08"=>"Braila",
               "09"=>"Brasov",
               "10"=>"Buzau",
               "11"=>"Calarasi",
               "12"=>"Caras-Severin",
               "13"=>"Cluj",
               "14"=>"Constanta",
               "15"=>"Covasna",
               "16"=>"Dimbovita",
               "17"=>"Dolj",
               "18"=>"Galati",
               "19"=>"Giurgiu",
               "20"=>"Gorj",
               "21"=>"Harghita",
               "22"=>"Hunedoara",
               "23"=>"Ialomita",
               "24"=>"Iasi",
               "25"=>"Maramures",
               "26"=>"Mehedinti",
               "27"=>"Mures",
               "28"=>"Neamt",
               "29"=>"Olt",
               "30"=>"Prahova",
               "31"=>"Salaj",
               "32"=>"Satu Mare",
               "33"=>"Sibiu",
               "34"=>"Suceava",
               "35"=>"Teleorman",
               "36"=>"Timis",
               "37"=>"Tulcea",
               "38"=>"Vaslui",
               "39"=>"Vilcea",
               "40"=>"Vrancea",
               "41"=>"Bucuresti S.1",
               "42"=>"Bucuresti S.2",
               "43"=>"Bucuresti S.3",
               "44"=>"Bucuresti S.4",
               "45"=>"Bucuresti S.5",
               "46"=>"Bucuresti S.6",
               "47"=>"Bucuresti-Ilfov", );
return $oraslista[$oras];
}
function validare($cod) { //Verifica daca CNP-ul este corect
$p1 = substr($cod,-13,1)*2;
$p2 = substr($cod,-12,1)*7;
$p3 = substr($cod,-11,1)*9;
$p4 = substr($cod,-10,1)*1;
$p5 = substr($cod,-9,1)*4;
$p6 = substr($cod,-8,1)*6;
$p7 = substr($cod,-7,1)*3;
$p8 = substr($cod,-6,1)*5;
$p9 = substr($cod,-5,1)*8;
$p10 = substr($cod,-4,1)*2;
$p11 = substr($cod,-3,1)*7;
$p12 = substr($cod,-2,1)*9;
$uc = substr($cod,-1,1); //Cifra de Control din CNP
$s = $p1+$p2+$p3+$p4+$p5+$p6+$p7+$p8+$p9+$p10+$p11+$p12;
$int = (int) ($s/11);
$c = $s-(11*$int); //Cifra de Control rezultata in urma calcului
if($c == $uc) {
return 1;
} else {
return 0;
}
}
function varsta($cod) {
$dataAN = dataAN($cod);
$ancurent = date("Y");
$varsta = $ancurent-$dataAN;
return $varsta;
}
if($valid == 1) {
echo 'CNP-ul este VALID<br><br>';
echo "<b>Data Nastere: $datazi / $dataluna / $dataan<br>*: $*<br>Oras: $oras<br>Varsta: $varsta ani";


} else {
echo 'CNP-ul este INVALID';
}


?>

scriptul se acceseaza cam asa: script.php?cnp=COD-CNP
Sus  
MihaiC



Data înscrierii: 14/Mai/2006
Mesaje: 1037
Locație: Navodari

Trimis: Mar Sep 30, 2008 9:36 pm    Titlul subiectului:  

Amenthes a scris:
Publica si tu o bucata de cod si dupa aia sa faci comentarii din astea. Nici macar in gluma sa nu mai zici ce ai zis.

Nu inteleg de ce daca as publica o bucata de cod as putea face comentarii.
In fine, mie chiar mi se pare neinteresant.
Nu de alta, dar nu aveam nici un cod de comentat, doar un link care putea sa-mi aduca o fericire mare (un virus de exemplu:P)

edit si ontopic: vezi ca functia validare() nu-ti merge corect
Sus  
corsar



Data înscrierii: 12/Ian/2008
Mesaje: 40

Trimis: Mar Sep 30, 2008 10:01 pm    Titlul subiectului:  

wow, cuvantul s e x este cenzurat pe un forum de programatori.
exiata vreun cliseu mai tare ca asta?


la obiect: alea nu sunt orase, sunt judete
am invatat chestii noi din algoritmul tau, insa ce te faci cu cei nascuti prin sectorul 7 (cand exista?)
Sus  
fanfm



Data înscrierii: 30/Sep/2008
Mesaje: 3
Locație: Fetesti

Trimis: Mar Sep 30, 2008 10:34 pm    Titlul subiectului: Hhhmmm  

poti gasii un scrip mult mai bun si care este mai frumos la aspect...contact me la id : fanfmfetesti :D :D :D :D
Sus  
Birkoff



Data înscrierii: 18/Mar/2004
Mesaje: 2607
Locație: Bucuresti

Trimis: Mie Oct 01, 2008 12:02 am    Titlul subiectului:  

de pe 25-06-2008 am un tutorial la mine despre lucrul cu CNP, dar unii vad ca au dezvoltat ideea si au facut deja clase din asa ceva :lol:
Sus  
dechim



Data înscrierii: 10/Mai/2005
Mesaje: 653
Locație: Drobeta Turnu Severin

Trimis: Mie Oct 01, 2008 12:37 am    Titlul subiectului:  

Am introdus CNP-ul '0000000000000' si mi-a raspuns:
Cod:
CNP-ul este VALID

Data Nastere: 00 / / 00
*:
Oras:
Varsta: 2008 ani

iar pentru CNP '9011333250007' care are corecte judetul ( Mehedinti nu Maramures) si cifra de control, obtin :
Cod:
CNP-ul este VALID

Data Nastere: 33 / / 01
*:
Oras: Maramures
Varsta: 2007 ani

Am facut acelasi test pe codul din tutorialul lui Birkoff
Pentru CNP = '0000000000000'
Cod:
Prima cifra din CNP - eronata!
Luna este incorecta!
Ziua este incorecta!
Data de nastere specificata este incorecta
Codul judetului este eronat!

Pentru CNP='9011333250007'
Cod:
Prima cifra din CNP - eronata!
Luna este incorecta!
Ziua este incorecta!
Data de nastere specificata este incorecta

Vezi diferenta ?!
Nu vreau sa te descurajez (esti inca elev) felicitari pentru cat ai facut dar ar fi bine sa corectezi....
Sus  
bluecrime



Data înscrierii: 21/Noi/2007
Mesaje: 87
Locație: Botosani

Trimis: Mie Oct 01, 2008 6:47 am    Titlul subiectului:  

Da acele erori pentru ca mi-a cenzurat si o bucata de cod...
Daca te crezi asa bun programator de ce nu ai corectat acolo unde a cenzurat forumul?
Sus  
dechim



Data înscrierii: 10/Mai/2005
Mesaje: 653
Locație: Drobeta Turnu Severin

Trimis: Mie Oct 01, 2008 2:16 pm    Titlul subiectului:  

Eu zic ca le-am corectat altfel nu puteam rula codul. Ti-am spus prieteneste, nu trebuie sa te superi, e o critica constructiva.
Imi pare rau ca n-ai culesc laudele pe care le asteptai, eu totusi te-am felicitat pentru cat ai facut.
Scuze pentru offtopic !!!
Sus  
LXS



Data înscrierii: 05/Oct/2008
Mesaje: 38
Locație: Timisoara

Trimis: Sâm Oct 11, 2008 2:29 am    Titlul subiectului:  

Felicitari pentru scriptul tau :)
@MihaiC esti nesimtzit!
Sus  
mihaitha



Data înscrierii: 04/Mai/2007
Mesaje: 1781
Locație: Sibiu

Trimis: Sâm Oct 11, 2008 8:49 am    Titlul subiectului:  

LXS a scris: @MihaiC esti nesimtzit! Si tu jignesti un alt membru al forum-ului, ceea ce constituie o incalcare a regulilor. Abtine-te, ca s-a mai luat ban din motivul asta.
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> Cod PHP
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community