Fiksitud php kood id-kaardi juhendist
Allikas: Lambda
Id-kaardi info välja parsimiseks kasuta alltoodud muutustega varianti id-kaardi juhendist: kaldkriipsude asemel väljade vahel koma , ja väljade järjestus ka hoopis teine.
php installimiseks ütle eelnevalt
sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt
Muudetud php parser siis:
<?php header ("Content-Type: text/html; charset=utf-8"); // Get user information obtained by Apache from the Estonian ID card. // Return list [last_name,first_name,person_code] or False if fails. function get_user () { // get relevant environment vars set by Apache // SSL_CLIENT_S_DN example: // /C=EE/O=ESTEID/OU=authentication/CN=SMITH,JOHN,37504170511/ // SN=SMITH/GN=JOHN/serialNumber=37504170511 $ident=getenv("SSL_CLIENT_S_DN"); $verify=getenv("SSL_CLIENT_VERIFY"); //echo $ident; //echo $verify; //echo "<p>"; //return True; // check and parse the values if (!$ident || $verify!="SUCCESS") return False; $ident=certstr2utf8($ident); // old cards use UCS-2, new cards use UTF-8 //if (strpos($ident,"/C=EE/O=ESTEID")!=0 && ) return False; $ps=strpos($ident,",SN="); $pg=strpos($ident,",GN="); $pc=strpos($ident,"serialNumber="); if (!$ps || !$pg) return False; $pse=strpos($ident,",",$ps+1); $pge=strpos($ident,",",$pg+1); $pce=strpos($ident,",",$pc+1); $res=array(substr($ident,$ps+4,$pse-($ps+4)), substr($ident,$pg+4,$pge-($pg+4)), substr($ident,$pc+13,11)); return $res; } // Convert names from UCS-2/UTF-16 to UTF-8. // Function taken from help.zone.eu. function certstr2utf8 ($str) { $str = preg_replace ("/\\\\x([0-9ABCDEF]{1,2})/e", "chr(hexdec('\\1'))", $str); $result=""; $encoding=mb_detect_encoding($str,"ASCII, UCS2, UTF8"); if ($encoding=="ASCII") { $result=mb_convert_encoding($str, "UTF-8", "ASCII"); } else { if (substr_count($str,chr(0))>0) { $result=mb_convert_encoding($str, "UTF-8", "UCS2"); } else { $result=$str; } } return $result; } // Actual script to run $user=get_user(); if (!$user) echo ("Authentication failed."); else { echo "Last name: " . $user[0] . "<br>"; echo "First name: " . $user[1] . "<br>"; echo "Person code: " . $user[2] . "<br>"; } ?>