RČ validátory - malinká poznámka

7801233540 i 7871233480
jsou validní rodná čísla. Kdo s tím někdy přišel do styku si řekne: "no jistě, proč mi to tu tlačí", komu tato čísla validátorem neprojdou, mohl by mít někdy problém, i když pravděpodobnost je malá.
<HTML>Teď jsem se musela zasmát Marku, protože vůbec nechápu souvislosti :-))

7871233480 přece ale není platné rodné číslo ne? Jak bys tam dostal tu sedmičku na třetí místo? Tam je přeci buď 0, 1, 5, 6, ale ne 7.</HTML>
Souvisí to s tím, co dělám, když nepíšu do wz.cz nebo flightsim.cz...

a výše uvedená čísla jsou skutečně validní.
k měsici se může přičíst 50 pro ženské, ale pro chlapy se může přičítat 20 a pro ženské taky ještě 20, takže 70.

Taky jsem to nevěděl.

viz třeba http://cs.wikipedia.org/wiki/Rodn%C3%A9_%C4%8D%C3%ADslo
<HTML>No tak to jsem tedy netušila. Co všechno se tu člověk nedozví :-)

Kdyby neprošlo to první, tak bych se nedivila. Není dělitelné 11ti, a když s tím programátor nepočítá... :-D
</HTML>
tak dobře
7871233480 - 7 byla zavedená v r.2004
0572221210 - tenhle typ byl zrušen v r. 1985

ne, ale

0575022965 validní je
Díval jsem se na odkaz na wiki,..

sice pěkné, ale z wiki jako by vyplývalo, že číslo za lomítkem začína 1,2,3,4 nebo 5. - Avšak toto neni pravda - znám pár lidí, jejichž čislo za lomítkem začíná šestkou.. (a jsou narozeni před rokem 2004..)
A teď znáš ještě jednoho, kdo má za lomítkem "0" :-)
Heh, byl jsem línej do formulářů dát kontrolu platnosti RČ, a teď si říkám, že jsem možná udělal dobře :-D Pač tohle je docela děsivý...
Už ani z té wiki to neumím opsat - první číslice za lomítkem - wiki se zmiňuje o 0,1,2,3,4 a 5. (a já přidávám známé, kteří mají šestku :)

___
Kite, ty ses narodil v Praglu nebo okolí? :)
nesmutněte:
<code>
function is_valid_RC($val)
{
$result = false;
if (strlen($val) >=9 && strlen($val) < 11)
{
$match = array();
preg_match('/^(..)(..)(..).*$/', $val, $match);
$rok = $match[1];
$d = getdate();
$y = substr($d['year'], -2) + 1;

$rrok = ($rok <= $y ? $rok + 2000 : $rok + 1900); // tohle by mohlo fungovat pomerne dlouho.
$mesic = $match[2];
$den = $match[3];

if ($mesic > 70)
{
$mesic -= 70;
}

if ($mesic > 50)
{
$mesic -= 50;
}

if ($mesic > 20)
{
$mesic -= 20;
}

$result = checkdate($mesic, $den, $rrok);

if ($result)
{
if ($rrok >= 1954)
{
// tohle je skutecne deleni jedenacti, jenom je to takove udelatko kvuli velikosti int 9900000000 uz je na 32bit sig int moc velike, ale desetina se tam jeste vleze
$sval = substr($val, 0, -1);
$sres = substr($val, -1);

$result = ((($sval % 11) % 10) == $sres);
}
else
{
$result = (strlen($val) == 9);
}
}
}
return $result;
}
</code>
Freeze: V okolí. Asi 260 km od Práglu.
Kite, něco takového?

http://img516.imageshack.us/my.php?image=kitwl9.jpg
Tak nějak. Však jsem napsal v okolí, ne?