2013-03-24, 18:02
  #1
Medlem
Hej jag skulle behöva hjälp med ett script som kontrollerar personnummer.
variablerna som jag har än så länge ser ut såhär:

Kod:
$pnumCheck = "$b_y-$b_m-$b_d-$f_ln";
$pnumCheck = str_replace("-", "", $pnumCheck);
$pnumCheck = str_replace("19", "", $pnumCheck);

b_y är året
b_m är månaden
b_d är dagen och f_ln är de 4 sista siffrorna som användaren själv matat in.

Vill alltså att scriptet ska kolla om det är en kille eller tjej och så de 4 sista siffrorna stämmer samt att
det ska komma upp felmeddelande om personnumret inte stämmer.

Har googlat runt en del men hittar inget vettigt som verkar fungera för mig :/

Tacksam för all hjälp jag kan få.
Citera
2013-03-24, 18:30
  #2
Medlem
Lite OT men det finns folk som är födda på 18- och 20-hundratalet också.
Det finns även folk med födelsedag + 60, ex 890191.
Minustecken(−) och bindestreck(-) varierar de med, (+)-tecken ifall personen är över 100.
Nu får du byta angreppsvinkel
Citera
2013-03-24, 18:31
  #3
Medlem
Fantomsmaertas avatar
nast sista siffran ar den som anger kon, jamn siffra for kvinnor och udda for man

sista siffran funkar sahar
http://sv.wikipedia.org/wiki/Luhn-algoritmen
Citera
2013-03-24, 18:34
  #4
Medlem
okej men kan någon hjälpa mig med det här scriptet har som sagt googlat en del å behöver hjälp med hur koden ska se ut för det har jag ingen aning om.

Koden ska vara på en sida där man registrerar sig.
Citera
2013-03-24, 19:01
  #5
Medlem
De 2 sista får vi hyffsat lätt med hjälp av det Fantomsmaerta sa. Näst sista för kön och sista som kontrollnummer för Luhns algoritm, så den biten är väl hyffsat klar?
Ska vi testa de 2 där före så måste vi även ha födelseplats, eller län räcker väl om de är födda i Sverige. Eller vänta, yngre enäggstvillingar blir väl också tilldelade ett extranummer mellan varven. Jag vet däremot inte om det alltid är på det viset..
Får du något felmeddelande när du kör?
Citera
2013-03-24, 19:10
  #6
Medlem
Tvillingens avatar
Här kan du läsa på om hur personnummer är uppbyggda samt hur man kan räkna ut och kontrollera personnummer. Du kommer inte att kunna titta upp om just någon specifik person har just det personnumret utan endast om det skulle vara giltigt.

http://www.skatteverket.se/privat/fo...c80001502.html

Gjorde ett skript för det här själv för något år sedan också, men känns bara korkat att använda den med tanke på hur koden ser ut. Koden skulle behövas skrivas på ett vettigt sätt istället, så vill du får du väl sitta och göra om min kod. Vilket som borde det gå både snabbare och lättare att bara läsa på om hur det är uppbyggt och skriva din egna funktion, för det är inte alls svårt.

Kul att titta tillbaka på saker man skrivit förut!
Kod:
<?php
$pn 
str_split(preg_replace('/[^0-9]/',''$_GET['p']));
$sum str_split(array_sum(str_split(implode('',array_map(function($a$b) { return ($b != 9) ? ((($b 2) === 0) ? (int) $a : (int) $a) : 0; }, $pnarray_keys($pn))))));
$rest = (int)((10 $sum[count($sum) - 1]) != 10) ? (10 $sum[count($sum) - 1]) : 0;
echo (
$rest === (int)array_pop($pn)) ? 'Giltigt personnummer' 'Ogilltigt personnummer, sista siffran borde vara ' $rest;
?>
Citera
2013-03-24, 19:23
  #7
Medlem
okej får försöka kolla lite på det då
Citera
2013-03-24, 21:11
  #8
Medlem
droles avatar
Slängde ihop ett Python-skript, kände att det var dags att lära sig bättre hur personnummret var uppbyggt :P

Vet att det inte är i PHP som du ville men det är rätt läsvänligt så lär inte vara så svårt att skriva om det i PHP.

http://pastebin.com/2QCcqwvf

Har tyvärr bara kunnat testa på mitt eget personnummer men då har det fungerat iaf.

Edit, den vill ha det i formatet ÅÅÅÅMMDDNNNN
Citera
2013-03-24, 23:14
  #9
Medlem
droles avatar
Citat:
Ursprungligen postat av drole
Slängde ihop ett Python-skript, kände att det var dags att lära sig bättre hur personnummret var uppbyggt :P

Vet att det inte är i PHP som du ville men det är rätt läsvänligt så lär inte vara så svårt att skriva om det i PHP.

http://pastebin.com/2QCcqwvf

Har tyvärr bara kunnat testa på mitt eget personnummer men då har det fungerat iaf.

Edit, den vill ha det i formatet ÅÅÅÅMMDDNNNN
Insåg mitt misstag i skriptet, ska fixa det snart.

Edit, fick annat för mig och hinner inte göra det nu.
__________________
Senast redigerad av drole 2013-03-24 kl. 23:42.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in