Doriți să reacționați la acest mesaj? Creați un cont în câteva clickuri sau conectați-vă pentru a continua.
Latest Topics
Topic
History
Written by
CS.IFYOUPLAY.TOP | Public (24/7) | International | German Hosting
Funny video
Muzică pe care o asculti acum
CS.ONCS.RO
Ghidul 2 al începătorului
Ieri la 7:14 pm
Ieri la 9:41 am
Ieri la 9:41 am
Lun Oct 07, 2024 7:49 am
Lun Oct 07, 2024 6:52 am






[Tutorial PHP]Verificare CNP (cod numeric personal)

Vezi subiectul anterior Vezi subiectul urmator In jos

 [Tutorial PHP]Verificare CNP (cod numeric personal) Empty [Tutorial PHP]Verificare CNP (cod numeric personal)

Mesaj Scris de Joker Joi Apr 27, 2023 10:58 pm

Nume Tutorial:Verificare CNP (cod numeric personal)
Descriere:Verificare CNP (cod numeric personal)
Download:Nu necesita
Autor:Anonim
Propria parere:Util.
Tutorialul:
Codul de mai jos afişează un formular în care se introduce Codul Numeric Personal şi se verifică dacă este corect sau nu. În cazul în care nu este corect se vor afişa mesajele de eroare şi se va cere din nou CNP-ul.

Cod:
 <?php
 /* Nume fisier: validare_cnp.php */
 /* Creat de danielplesu [AT] yahoo [DOT] com */
 /* Copyright Daniel Plesu 17-06-2008 */
 /* Corectat de Birkoff - www.tutoriale    far  php  ro */
 
 // functia care afiseaza formularul
 function afisare_form_cnp($stare = 1)
 {
 //daca valoarea variabilei $stare este 1 atunci se afiseaza campul cnp - gol
 if ($stare == 1)
 $cnp = '';
 
 // daca valoarea variabilei $stare este diferita de 1 atunci se preiau
 // mai intai datele trimise anterior prin POST din formular
 // si se afiseaza formularul cu valorile primite.
 else
 $cnp = $_POST['cnp'];
 
 // se genereaza variabila cu tabelul care contine formularul                 
 $form = '<div align="center">
 <form method="post" action="'.$_SERVER['PHP_SELF'].'">
 <input name="cnp" type="text" value="'.$cnp.'" size="20">
 <input type="submit" name="Submit" value="Verifica CNP!" size="25"><br>
 </form>
 </div>';
 return $form;
 
 }
 
 // functia care preia datele din formular si returneaza datele primite
 function preluare_date($de_unde = 1)
 {
 
 switch ($de_unde)
 {
 default:
 case '1': // din post
 $cnp['cnp primit'] = trim($_POST['cnp']);
 break;
 case '2': // din get
 $cnp['cnp primit'] = trim($_GET['cnp']);
 break;
 }
 
 return $cnp['cnp primit'];
 }
 
 // functia care valideaza datele primite si returneaza erorile daca sunt
 function validare_cnp($cnp_primit)
 {
 
 $cnp['cnp primit'] = $cnp_primit;
 // prima cifra din cnp reprezinta sexul si nu poate fi decat 1,2,5,6 (pentru cetatenii romani)
 // 1, 2 pentru cei nascuti intre anii 1900 si 1999
 // 5, 6 pentru cei nsacuti dupa anul 2000
 $cnp['sex'] = $cnp['cnp primit'];       
 // cifrele 2 si 3 reprezinta anul nasterii
 $cnp['an'] = $cnp['cnp primit'].$cnp['cnp primit'];             
 // cifrele 4 si 5 reprezinta luna (nu poate fi decat intre 1 si 12)
 $cnp['luna']    = $cnp['cnp primit'].$cnp['cnp primit'];     
 // cifrele 6 si 7 reprezinta ziua (nu poate fi decat intre 1 si 31)
 $cnp['zi']    = $cnp['cnp primit'].$cnp['cnp primit'];                               
 // cifrele 8 si 9 reprezinta codul judetului (nu poate fi decat intre 1 si 52)
 $cnp['judet'] = $cnp['cnp primit'].$cnp['cnp primit'];                                           
 // cifrele 10,11,12 reprezinta un nr. poate fi intre 001 si 999.
 // Numerele din acest interval se impart pe judete,
 // birourilor de evidenta a populatiei, astfel inct un anumit numar din acel
 // interval sa fie alocat unei singure persoane intr-o anumita zi.
 
 // cifra 13 reprezinta cifra de control aflata in relatie cu
 // toate celelate 12 cifre ale CNP-ului.
 // fiecare cifra din CNP este inmultita cu cifra de pe aceeasi pozitie
 // din numarul 279146358279; rezultatele sunt insumate,
 // iar rezultatul final este impartit cu rest la 11. Daca restul este 10,
 // atunci cifra de control este 1, altfel cifra de control este egala cu restul.
 $cnp['suma de control'] = $cnp['cnp primit'] * 2 + $cnp['cnp primit'] * 7 +
 $cnp['cnp primit'] * 9 + $cnp['cnp primit'] * 1 + $cnp['cnp primit'] * 4 +
 $cnp['cnp primit'] * 6 + $cnp['cnp primit'] * 3 + $cnp['cnp primit'] * 5 +
 $cnp['cnp primit'] * 8 + $cnp['cnp primit'] * 2 + $cnp['cnp primit'] * 7 +
 $cnp['cnp primit'] * 9;
 $cnp['rest'] = fmod($cnp['suma de control'], 11);
 // setarea variabilei de erori, in cazul in care nu exista erori
 // sa returneze un array gol (altfel ar da eroare)
 $erori = array();
 
 if (empty($cnp['cnp primit']))
 $erori[] = 'Campul CNP este gol!<br>';
 
 else
 {
 if (! is_numeric($cnp['cnp primit']))
 $erori[] = 'CNP-ul este format doar din cifre!<br>';
 
 if (strlen($cnp['cnp primit']) != 13)
 {
 $cifre = strlen($cnp['cnp primit']);
 $erori[] = 'CNP-ul trebuie sa aiba 13 numere, cel introdus are doar '.$cifre.' !<br>';
 }
 if($cnp['sex'] != 1 && $cnp['sex'] != 2 && $cnp['sex'] != 5 && $cnp['sex'] != 6)
 $erori[] = 'Prima cifra din CNP - eronata!<br>';
 
 if($cnp['luna'] > 12 || $cnp['luna'] == 0 )
 $erori[] = 'Luna este incorecta!<br>';
 
 if($cnp['zi'] > 31 || $cnp['zi'] == 0)
 $erori[] = 'Ziua este incorecta!<br>';
 
 if ( is_numeric($cnp['luna']) && is_numeric($cnp['zi']) && is_numeric($cnp['an']) )
 {
 if (! checkdate($cnp['luna'],$cnp['zi'],$cnp['an']))
 $erori[] = 'Data de nastere specificata este incorecta<br>';
 }
 
 if($cnp['judet'] > 52 || $cnp['judet'] == 0)
 $erori[] = 'Codul judetului este eronat!<br>';
 
 if (($cnp['rest'] < 10 && $cnp['rest'] != $cnp['cnp primit'])
 || ($cnp['rest'] >= 10 && $cnp['cnp primit'] != 1))
 $erori[] = 'Cifra de control este gresita! (CNP-ul nu este valid)<br>';
 }
 
 return $erori;
 }
 
 // de aici incepe codul propriuzis
 
 // daca utilizatorul este pentru prima data pe pagina i se afiseaza campul cnp - gol
 if (!isset($_POST['cnp']))
 echo afisare_form_cnp(1);
 
 // daca s-a trimis ceva prin post, se preiau datele si se verifica
 else
 {
 // preluare date din post
 $cnp = preluare_date(1);
 // verificare de erori (se primeste un array cu mesajele de erori sau un array gol daca nu sunt erori)
 $erori = validare_cnp($cnp);
 // daca sunt erori
 if (count($erori)) // daca array-ul are macar 1 mesaj de eroare
 {
 echo implode(' ', $erori); // se transforma arayul in sir si se afiseaza
 echo afisare_form_cnp(0); // se afiseaza formularul cu datele deja introduse
 }
 else // daca nu sunt erori
 echo 'Felicitari! CNP-ul e valid!<br>'.$cnp;
 }
 ?>
Joker

Joker
Premium User

Medalia Topicurilor
Insigna pentru crearea a 150 de posturi !
Medalia prieteniei
Felicitari ! Această insignă se obține când ai un prieten !
Medalia grupurilor
Felicitari ! Dacă ai această insignă înseamnă că faci parte din cel puțin 4 grupuri.
Primul topic creat
Felicitari ! Ai primit aceasă insignă pentru primul tau topic făcut la noi pe forum !
Medalie de mulțumire
Felicitari ! Această insignă se obține când oferi o mulțumire !
Medalie de apreciere
Felicitari ! Această insignă se obține când ai 10 de mesaje apreciate !
Medalie participare subiecte
Insigna pentru participarea la 125 de subiecte !
Medalie de puncte
Disponibilă la 15000 de puncte!
Medalia vechimii [ani]
Ai 365 de zile de când ești alături de noi !
Pet : Test
Mesaje : 180
Puncte : 41772
Multumiri primite: : 33
Data de înscriere : 25/10/2022

Sus In jos

Vezi subiectul anterior Vezi subiectul urmator Sus

- Subiecte similare

 
Permisiunile acestui forum:
Nu puteti raspunde la subiectele acestui forum