Personas koda un IBAN validācija

14
Apr
4

Šie validācijas skripti gan vairāk attiecas uz mani pašu, jo tos tāpat var diezgan viegli atrast izmantojot tanti gūgli. Bet kāpēc man katru reizi meklēt, ja es varu tos pierakstīt un nākamreiz jau doties uz konkrētu vietu un nokopēt? (:

Personas kods:

1
2
3
4
5
6
function validate_pk($pk){
	$pk = preg_replace("/[^\d]/","",$pk);
	$calc = 1*$pk[0]+6*$pk[1]+3*$pk[2]+7*$pk[3]+9*$pk[4]+10*$pk[5]+5*$pk[6]+8*$pk[7]+4*$pk[8]+2*$pk[9];
	$checksum = (1101-$calc)%11;
	return $checksum==$pk[10];
}

IBAN (bankas konta numurs):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
function validate_iban($str,$reformat=true,$debug=false){
	if($reformat){
		$str = preg_replace('/[\W_]+/','',strtoupper($str));
	}
	$errors = array();
	if(4>strlen($str) || strlen($str)>34){
		$errors[] = 'Invalid string length';
	}
	if(is_numeric($str[0]) || is_numeric($str[1])){
		$errors[] = 'Invalid chars at 0, 1';
	}
	if(!is_numeric($str[2]) || !is_numeric($str[3])){
		$errors[] = 'Invalid chars at 3, 4';
	}
	$ibanReplaceChars = range('A','Z');
	foreach(range(10,35) as $tempvalue){
		$ibanReplaceValues[]=strval($tempvalue);
	}
	$tmpIBAN = substr($str,4).substr($str,0,4);
	$tmpIBAN = str_replace($ibanReplaceChars,$ibanReplaceValues,$tmpIBAN);
	$tmpValue = intval(substr($tmpIBAN,0,1));
	for($i=1;$i<strlen($tmpIBAN);$i++){
		$tmpValue*= 10;
		$tmpValue+= intval(substr($tmpIBAN,$i,1));
		$tmpValue%= 97;
	}
	if($tmpValue!=1){
		$errors[] = 'Invalid checksum';
	}
	if(empty($errors)){
		return true;
	}
	if($debug){
		echo implode("\n", $errors);
	}
	return false;
}
Filed under: PHP, datubāzes
4 Comments

4 Comments

  1. ivo
    18:34 on May 3rd, 2009

    cool

  2. asp
    10:27 on August 3rd, 2009

    PK paarbaudes kods nav pilniigs .. bet principaa straadaajosh

    pielabot vajag –> E-pasts (netiks publicēts) (nav obligāts) <–, jo izraadaas IR obligaats

  3. Mārcis
    16:32 on August 3rd, 2009

    Tad jau tu varēji padalīties ar pilnīgo algoritmu…

  4. Mediju Centrs
    01:13 on December 16th, 2009

    Nav jau tik gruti to piezimet. TNX :)

Leave a comment

RSS barotne komentāriem pie šī raksta