No kad pengenalan malaysia : 7701023-11-3422
Hukum 1
7701023 - tarikh lahir, kena buat hukum supaya tarik itu valid
Hukum 2
11 - no kod negeri, kena check negeri valid ker tak
Hukum 1
3422 - entah..tapi no genap akhir menunjukkan lelaki/perempuan
So dalam Model CakePHP kena buat checking khas untuk pastikan user masukkan nombor yang betul
Input adalah input text, samaada nak guna 1 field atau pecah 3 ?
So sapa nak buat ? Ramai nak guna nih ?
No kad pengenalan malaysia : 7701023-11-3422
Hukum 1
7701023 - tarikh lahir, kena buat hukum supaya tarik itu valid
Hukum 2
11 - no kod negeri, kena check negeri valid ker tak
Hukum 1
3422 - entah..tapi no genap akhir menunjukkan lelaki/perempuan
So dalam Model CakePHP kena buat checking khas untuk pastikan user masukkan nombor yang betul
Input adalah input text, samaada nak guna 1 field atau pecah 3 ?
So sapa nak buat ? Ramai nak guna nih ?
Hukum 1 :7701023 - tarikh lahir, kena buat hukum supaya tarik itu valid kalau tak silap, 7701023 ada 7 nombor sejak bila JPN tambah nombor kat situ????
typo la tu
No kad pengenalan malaysia : 7701023-11-3422
Hukum 1
7701023 - tarikh lahir, kena buat hukum supaya tarik itu valid
Hukum 2
11 - no kod negeri, kena check negeri valid ker tak
Hukum 1
3422 - entah..tapi no genap akhir menunjukkan lelaki/perempuan
So dalam Model CakePHP kena buat checking khas untuk pastikan user masukkan nombor yang betul
Input adalah input text, samaada nak guna 1 field atau pecah 3 ?
So sapa nak buat ? Ramai nak guna nih ?
Hukum 1 :7701023 - tarikh lahir, kena buat hukum supaya tarik itu valid kalau tak silap, 7701023 ada 7 nombor sejak bila JPN tambah nombor kat situ????
typo la tu
typo tu apa???
No kad pengenalan malaysia : 7701023-11-3422
Hukum 1
7701023 - tarikh lahir, kena buat hukum supaya tarik itu valid
Hukum 2
11 - no kod negeri, kena check negeri valid ker tak
Hukum 1
3422 - entah..tapi no genap akhir menunjukkan lelaki/perempuan
So dalam Model CakePHP kena buat checking khas untuk pastikan user masukkan nombor yang betul
Input adalah input text, samaada nak guna 1 field atau pecah 3 ?
So sapa nak buat ? Ramai nak guna nih ?
aku patch dlm cake/libs/validation.php
add dlm ssn function, asal boleh guna dulu. hehe
case 'my':
$_this->regex = '/\\A\\b[0-9]{6}-[0-9]{2}-[0-9]{4}\\b\\z/i';
break;Usage
var $validate = array(
'ssn' => array(
'rule' => array('ssn', null, 'my')
)
);
No kad pengenalan malaysia : 7701023-11-3422
Hukum 1
7701023 - tarikh lahir, kena buat hukum supaya tarik itu valid
Hukum 2
11 - no kod negeri, kena check negeri valid ker tak
Hukum 1
3422 - entah..tapi no genap akhir menunjukkan lelaki/perempuan
So dalam Model CakePHP kena buat checking khas untuk pastikan user masukkan nombor yang betul
Input adalah input text, samaada nak guna 1 field atau pecah 3 ?
So sapa nak buat ? Ramai nak guna nih ?
Hukum 1 :7701023 - tarikh lahir, kena buat hukum supaya tarik itu valid kalau tak silap, 7701023 ada 7 nombor sejak bila JPN tambah nombor kat situ????
typo la tu
typo tu apa???
$typo = 'salah taip';
ic tentera ngan polis ? kadang state ada dua nombor tengah
kene buat option validate samada polis atau tentera. mmg ade kebarangkalian. so sapa nak contribute paste la snippet kat sini.
good one hymns ( apa nama betul ? )
Hack SSN
, tapi kena hack pulak kat core
good one hymns ( apa nama betul ? )
Hack SSN
, tapi kena hack pulak kat core
Aik dari WM dulu sama2 dgn MHR, Mystic. Jadi tukang test ko punya mamakspot masa ko mula2 main cake pun ko tanya lagi sape nama aku. hampeh punya orang kampung! Ko balik johor haku calar2 kan kete ngko 
* Dah tu paling senang & cepat. Patch skit je. Release core baru pun lama lagi. Baru je kuar 1.3.2 
aku patch lagi dlm cake/libs/validation.php
case 'my':
$_this->regex = '/\\A\\b[0-9]{6}-[0-9]{2}-[0-9]{4}\\b\\z/i';
break;
case 'myo':
$_this->regex = '/\\A\\b[at]{1}[0-9]{7}\\b\\z/i';
break;Usage
var $validate = array(
'ssn' => array(
'rule' => array('ssn', null, 'myo')
)
);Valid untuk tentera (T1234567) & ic lama (A1234567). Polis aku tak tau format ape?
ha hah ok total recalled
ok extra hukum untuk 6 digit pertama
1. kita tau kan birthday, so kena laa valid date kan
801131 sure tak valid sebab mana ada tarikh 31 November 1980, cara paling terbaik, guna fungsi checkdate().
http://php.net/manual/en/function.checkdate.php
untuk hukum no 2, based ikut negeri
01= johor
02 = melaka
So yg nih boleh guna in_array() untuk checking
hukum no 3 ( 4 angka terakhir ) nih aku tak tau kriteria dia
ha hah ok total recalled
ok extra hukum untuk 6 digit pertama
1. kita tau kan birthday, so kena laa valid date kan
801131 sure tak valid sebab mana ada tarikh 31 November 1980, cara paling terbaik, guna fungsi checkdate().
http://php.net/manual/en/function.checkdate.php
untuk hukum no 2, based ikut negeri
01= johor
02 = melaka
So yg nih boleh guna in_array() untuk checking
hukum no 3 ( 4 angka terakhir ) nih aku tak tau kriteria dia
last digit untuk 4 digit ni kalau ganjil lelaki & genap perempuan
<?php
//
// @params string $ic_number
// @params bool $non_standard ic type
// @params string $gender M/F
function nirc_validation($ic_number, $non_standard=false, $gender=null)
{
// check non standard (askar / ic lama) ? polis ? x tau format
if ($non_standard)
return preg_match("/\A\b[at]{1}[0-9]{7}\b\z/i", $ic_number);
// standard ic
else
{
// looking for dashed '-'
if (strpos($ic_number, '-'))
{
// check str len, no match 14 char?
if (strlen($ic_number) != 14)
return false;
// check format
if (!preg_match("/\A\b[0-9]{6}-[0-9]{2}-[0-9]{4}\b\z/i", $ic_number))
return false;
$ic_part = explode('-', $ic_number);
// check dash, not match 3 part ?
if (sizeof($ic_part) != 3)
return false;
// split of
$date_of_birth = $ic_part[0];
$state_of_birth = $ic_part[1];
$gender_of_user = $ic_part[2];
}
// no dashed ic
else
{
// check str len, not match 12 char?
if (strlen($ic_number) != 12)
return false;
// split of
$date_of_birth = substr($ic_number, 0, 6);
$state_of_birth = substr($ic_number, 6, 2);
$gender_of_user = substr($ic_number, -4);
}
// -------------------------------------------------
// filtering part
// -------------------------------------------------
// mod date
$year_of_birth = substr($date_of_birth, 0, 1) != 0 ? 19 : 20;
$year_of_birth = (int) $year_of_birth . substr($date_of_birth, 0, 2);
$month_of_birth = (int) substr($date_of_birth, 2,2);
$day_of_birth = (int) substr($date_of_birth, -2);
// check birth
if (!checkdate($month_of_birth, $day_of_birth, $year_of_birth));
return false;
// check state
$state_list = array('01', '11'); // tambah sendiri yerk
if (!in_array($state_of_birth, $state_list))
return false;
// check gender
if (!empty($gender))
{
$gender_user = substr($gender_of_user, -1);
$identifier = ($gender_user & 1) ? 'M' : 'F';
if ($gender != $identifer)
return false;
}
// done
return true;
}
}
?>bumb! 
sukacita kalau disertakan contoh untuk gabungkan dalam Model, apa kata User Model
<?php
Class User extends AppModel{
var $validate = array(...);
function nirc_validation($ic_number, $non_standard=false, $gender=null){...}
}
?>
sukacita kalau disertakan contoh untuk gabungkan dalam Model, apa kata User Model
<?php
Class User extends AppModel{
var $validate = array(...);
function nirc_validation($ic_number, $non_standard=false, $gender=null){...}
}
?>Err test dulu code tuh. Aku x sempat test. Pinggan pecah pulak. Dah kul 12 ni lom masak lagi. Sila2 report/patch sendiri kalau ada bugs
ni contoh nak cek no ic.
updated version. cover tahun lompat.
format: yymmdd-ss-rrrr atau yymmddssrrrr
<?php
class User extends AppModel {
var $name = 'User';
var $validate = array(
'no_kp' => array(
'rule' => array('ic','JH','male'),
'message' => 'No ic x valid'
)
);
function ic($data, $state=null, $sex=null) {
$value = array_values($data);
$value = $value[0];
// reference: <a>http://www.jpn.gov.my/kodnegeri</a>
$state_arr = array(
'JH'=>'01|21|22|23|24', //johor
'KD'=>'02|25|26|27', //kedah
'KN'=>'03|28|29', //kelantan
'MK'=>'04|30', //melaka
'NS'=>'05|31|59', //n sembilan
'PH'=>'06|32|33', //pahang
'PP'=>'07|34|35', //p pinang
'PK'=>'08|36|37|38|39', //perak
'PS'=>'09|40', //perlis
'SL'=>'10|41|42|43|44', //selangor
'TG'=>'11|45|46', //terengganu
'SB'=>'12|47|48|49', //sabah
'SW'=>'13|50|51|52|53', //sarawak
'WPK'=>'14|54|55|56|57', //KL
'WPL'=>'15|58', //labuan
'WPP'=>'16', //putrajaya
'UN'=>'82', //unknown
);
$sex_arr = array(
'male'=>'1|3|5|7|9',
'female'=>'0|2|4|6|8',
);
$regex = '%^((((([02468][048]|[13579][26]))((((0[13578])|(1[02]))(([0-2][0-9])|(3[01])))|(((0[469])|11)(([0-2][0-9])|30))|(02[0-2][0-9])))|((([02468][1235679])|([13579][01345789]))((((0[13578])|(1[02]))(([0-2][0-9])|(3[01])))|(((0[469])|11)(([0-2][0-9])|30))|(02[0-2][0-8]))))' //YYMMDD
.'[-]?' //-
. '('.(isset($state_arr[$state])?$state_arr[$state]:implode('|',$state_arr)).')' //SS
.'[-]?' //-
.'[0-9]{3}('.(isset($sex_arr[$sex])?$sex_arr[$sex]:'[0-9]').'))$%'; //RRRR
return preg_match($regex, $value);
}
}
?>
terima kasih, boleh nanti tambah checking tahun lumpat..or validateDate
ni contoh nak cek no ic. kelemahan dia xleh cek tahun lompat. format: yymmdd-ss-rrrr atau yymmddssrrrr
<?php
class User extends AppModel {
var $name = 'User';
var $validate = array(
'no_kp' => array(
'rule' => 'ic',
'message' => 'No ic x valid'
)
);
function ic($data) {
$state = null; //change it to your desire value
$sex = null; //change it to your desire value
$value = array_values($data);
$value = $value[0];
// reference: <a href="http://www.jpn.gov.my/kodnegeri">http://www.jpn.gov.my/kodnegeri</a>
$state_arr = array(
'JH'=>'01|21|22|23|24', //johor
'KD'=>'02|25|26|27', //kedah
'KN'=>'03|28|29', //kelantan
'MK'=>'04|30', //melaka
'NS'=>'05|31|59', //n sembilan
'PH'=>'06|32|33', //pahang
'PP'=>'07|34|35', //p pinang
'PK'=>'08|36|37|38|39', //perak
'PS'=>'09|40', //perlis
'SL'=>'10|41|42|43|44', //selangor
'TG'=>'11|45|46', //terengganu
'SB'=>'12|47|48|49', //sabah
'SW'=>'13|50|51|52|53', //sarawak
'WPK'=>'14|54|55|56|57', //KL
'WPL'=>'15|58', //labuan
'WPP'=>'16', //putrajaya
'UN'=>'82', //unknown
);
$sex_arr = array(
'male'=>'1|3|5|7|9',
'female'=>'0|2|4|6|8',
);
$regex = '([0-9]{2}' //YY
.'([0][1-9]|[1][0-2])' //MM
.'([0-2][0-9]|[3][0-1])' //DD
.'[-]?' //-
. '('.(isset($state_arr[$state])?$state_arr[$state]:implode('|',$state_arr)).')' //SS
.'[-]?' //-
.'[0-9]{3}('.(isset($sex_arr[$sex])?$sex_arr[$sex]:'[0-9]').'))'; //RRRR
return preg_match($regex, $value);
}
}
?>nice one 
lepas nih boleh tambah no telco pulak, cakephp validation localised untuk Malaysia...good efforts. Nanti aku buat review dalam my blow
Ada beberapa kod lagi untuk warganegara yang dilahirkan di luar negara:
Aku ada kawan perempuan yang nombor belakang IC nombor ganjil. Macam mana plak tu? heheh. Jarang berlaku, 1 dalam 1 juta punya kes kot.
aku pun penah jumpa kwn pempuan sama kod negeri dan 4 digit last tuh dengan ic aku.. hahaha
p/s: aku laki.. 
aku pun penah jumpa kwn pempuan sama kod negeri dan 4 digit last tuh dengan ic aku.. hahaha
p/s: aku laki.. 
dob lain kan... 
Ada beberapa kod lagi untuk warganegara yang dilahirkan di luar negara:
Bukan untuk validation no kp. tapi untuk tambah library negara dalam kod e_m_n_u . untuk orang malas taip satu2 macam aku. Kod janji boleh jalan 
<?php
$dom = new DOMDocument();
$dom->loadHTML(file_get_contents('http://www.jpn.gov.my/kodnegara'));
$myval = '';
$x = 0;
$toggle = 'K';
foreach ($dom->getElementsByTagName('td') as $td) {
if ($myval == 'SENARAI KOD BAGI NEGARA KELAHIRAN') {
$toggle = ($toggle == 'N') ? 'K' : 'N';
$data[$x][$toggle] = trim($td->nodeValue);
if ($toggle == 'K')
$x++;
}
if ($myval != 'SENARAI KOD BAGI NEGARA KELAHIRAN') {
$myval = trim($td->nodeValue);
}
}
/*
echo '<pre>';
print_r($data);
echo '</pre>';
*/
$country = trim(file_get_contents('http://www.iso.org/iso/list-en1-semic-3.txt'));
$country = str_replace('This list states the country names (official short names in English) in alphabetical order as given in ISO 3166-1 and the corresponding ISO 3166-1-alpha-2 code elements. The list is updated whenever a change to the official code list in ISO 3166-1 is effected by the ISO 3166/MA. It lists 246 official short names and code elements. One line of text contains one entry. A country name and its code element are separated by a semicolon (;).', '', $country);
//echo $country;
$lines = explode("\n", trim($country));
foreach ($lines as $val) {
$dat = explode(';', $val);
$country_code[trim($dat[0])] = trim($dat[1]);
}
/*
echo '<pre>';
print_r($country_code);
echo '</pre>';
*/
foreach ($data as $row) {
if (array_key_exists(strtoupper($row['N']), $country_code)) {
echo "'{$country_code[strtoupper($row['N'])]}'=>'{$row['K']}', //{$row['N']}<br/>";
} else {
echo "'{$row['N']}'=>'{$row['K']}', //{$row['N']} === Shortcode not found!<br/>";
}
}
?>
aku pun penah jumpa kwn pempuan sama kod negeri dan 4 digit last tuh dengan ic aku.. hahaha
p/s: aku laki.. 
dob lain kan... 
kalau sama dah jadi kes kembar siam lain mak lain bapak 
aku pun penah jumpa kwn pempuan sama kod negeri dan 4 digit last tuh dengan ic aku.. hahaha
p/s: aku laki.. 
dob lain kan... 
kalau sama dah jadi kes kembar siam lain mak lain bapak 
hahaha 
No kad pengenalan malaysia : 7701023-11-3422
Hukum 1
7701023 - tarikh lahir, kena buat hukum supaya tarik itu valid
Hukum 2
11 - no kod negeri, kena check negeri valid ker tak
Hukum 1
3422 - entah..tapi no genap akhir menunjukkan lelaki/perempuan
So dalam Model CakePHP kena buat checking khas untuk pastikan user masukkan nombor yang betul
Input adalah input text, samaada nak guna 1 field atau pecah 3 ?
So sapa nak buat ? Ramai nak guna nih ?
Hukum 1 :7701023 - tarikh lahir, kena buat hukum supaya tarik itu valid kalau tak silap, 7701023 ada 7 nombor sejak bila JPN tambah nombor kat situ????