Alterskontrolle via Perso

Nikuda

Ensign
Dabei seit
März 2004
Beiträge
199
Hey Leute,

ich habe schon öfters mal gesehen, das man eine Alterskontolle für eine Webseite in Form einer Personalausweiß überprüfung machen kann!

Das ganze wäre für unsere CLAN Page, da wir nur Mitglieder ab 21 aufnehmen.


Ergo müsste erkannt werden - bei Eingabge der Perso Nummern, ob die Person über 21 oder unter 21 ist!

Wie kann ich so was machen und geht das überhaupt?

Ein Verfahren mit Geburtsdatum wäre nicht denkbar... ist zu einfach zu umgehen!
Jeder kann sich ja ein Geburtsjahr ausdenken... das hilft uns dann auch nicht weiter!
 
S

sunny-side_down

Gast
Sehr interessante Fragestellung. Ich hab mich gleich mal umgesehen und das hier gefunden:
http://de.wikipedia.org/wiki/Adult_Verification_System

Aus der Personalausweisnummer kann man irgendwie eine Prüfnummer auslesen, die dann Aufschluss gibt, ob der Perso korrekt ist oder nicht. Jetzt müsste man nur noch wissen, wie man die Gültigkeit einer solchen Prüfnummer verifizieren kann.

EDIT:
Guckst du hier:
http://www.ayom.com/topic-1424.html

Da steht es genau beschrieben. Allerdings weist der Wiki-Artikel ja schon drauf hin, dass die Methode nicht wirklich narrensicher ist, weil man ja mit diesen Kenntnissen einfach ein falsches Geb-Datum angeben kann und die Prüfnummer entsprechend verändern kann. Allerdings ist es wohl besser als nix, denn man muss diese Infos ja erstmal haben!
 
Zuletzt bearbeitet:

Boron

Commander
Dabei seit
Sep. 2001
Beiträge
2.784

Nikuda

Ensign
Ersteller dieses Themas
Dabei seit
März 2004
Beiträge
199
Nun ja... das Auslesen dieser sogenannten Prüfnummer wäre ja schon mal ein Anfang...

Mich würde halt interessieren... wie das auf solchen Webseiten funktioniert... und wie man dann noch erkennen kann - aha... der ist 21 oder so...
 
S

sunny-side_down

Gast
Du hast aber schon gelesen, was wir dir gepostet haben, oder? Da steht alles drin, was du zur Beantwortung deiner Fragen wissen musst. Das PHP-Skript musst du dir dann wohl schon selber schreiben.
 

Nikuda

Ensign
Ersteller dieses Themas
Dabei seit
März 2004
Beiträge
199
Ja hatte ich erst zu spät gelesen *g*

Sorry :-)


Nun jetzt muss ich nur noch wissen... wie ich das ganze einbinde...

Das ganze soll so in etwa aussehen:

Alterskontrolle -> wenn ok -> Formular ausfüllen -> mailto (bzw per Mail Script auf dem Server) und fertig!

Das andere Problem ist - wie bekomme ich z.B. ein Ausgefülltes Formular am besten als Tabelle angezeigt - bzw. als HTML zur E-Mail Adresse gesendet und dann einfach als Tabelle öffnen und qusai nur noch Importieren.

Ich kenne mich halt nicht ganz so gut mit PHP aus :-(
 

ZeroFlash

Lt. Junior Grade
Dabei seit
Jan. 2002
Beiträge
382

Nikuda

Ensign
Ersteller dieses Themas
Dabei seit
März 2004
Beiträge
199
Hey Leute!

Ich habe hier mal nen Code gefunden:

PHP:
function get_age($birthday_day, $birthday_month, $birthday_year)
{
        $user_age = date('Y') - $birthday_year;
        if ( mktime(0, 0, 0, $birthday_month, $birthday_day, date('Y')) > time() )
        {
                $user_age--;
        }
        return $user_age;
}


class hrwsPassport {
	var $lastresult = array();

	function pak_check($aArr) {
		$res = array("valid" => false, "birthday" => 0, "age" => "", "validto" => 0, "error" => 1);
		$CodeA = trim($aArr[0]);
		$CodeB = trim($aArr[1]);
		$CodeC = trim($aArr[2]);
		$CodeD = trim($aArr[3]);
		if (strlen($CodeA) > 10) 
		{
			$CodeA = substr($CodeA, 0, 10);
		}
		if (strlen($CodeB) > 7) 
		{
			$CodeB = substr($CodeB, 0, 7);
		}
		if (strlen($CodeC) > 7) 
		{
			$CodeC = substr($CodeC, 0, 7);
		}
		if (strlen($CodeD) > 1) 
		{
			$CodeD = substr($CodeD, 0, 1);
		}
		if ((strlen($CodeA) != 10) || (strlen($CodeB) != 7) || (strlen($CodeC) != 7) || (strlen($CodeD) != 1))
		{
			return $res;
		}
		if ($this->pak_getchecksum(substr($CodeA,0,-1)) != substr($CodeA, -1))
		{
			return $res;
		}
		if ($this->pak_getchecksum(substr($CodeB,0,-1)) != substr($CodeB, -1)) 
		{
			return $res;
		}
		if ($this->pak_getchecksum(substr($CodeC,0,-1)) != substr($CodeC, -1))
		{
			return $res;
		}
		if ($this->pak_getchecksum($CodeA.$CodeB.$CodeC) != $CodeD) 
		{
			return $res;
		}
		
		$res['valid'] = true;
		$year = (int)(substr($CodeB,0,2));
		if (substr($CodeB,0,6) <= strftime("%y%m%d"))
		{
			$year += 2000;
		}
		else
		{
			$year += 1900;
		}
		
		$res['byear'] = $year;
		$res['bmonth'] = (int)(substr($CodeB,2,2));
		$res['bday'] = (int)(substr($CodeB,4,2));
		if ($year >= 1970)
		{
			$res['birthday'] = mktime(0,0,0,$res['bmonth'], $res['bday'], $year);
		}
		else
		{
			$res['birthday'] = -1;
		}
		$res['validto'] = mktime(0,0,0,(int)(substr($CodeC,2,2)), (int)(substr($CodeC,4,2)), (int)(substr($CodeC,0,2)));
		$res['age'] = date('Y')-$year;
		if (date('m') < $res['bmonth'])
		{
			$res['age']--;
		}
		else if ((date('m') == $res['bmonth']) && (date('d') < $res['bday']))
		{
			$res['age']--;
		}
		
		if (time() > ($res['validto'] + (60*60*24))) 
		{
			$res['valid'] = false;
			$res['error'] = -1;
		}
		else
		{
			$res['error'] = 0;
		}
		$this->lastresult = $res;
		return $res;
	}

	// private function
	function pak_getchecksum($aCode) {
		// Calculate and return the checksum
		$multi = array(7,3,1);
		$i = 0;
		$sum = 0;
		for ($c = 0; $c < strlen($aCode); $c++) 
		{
			$sum += $multi[$i] * (int)(substr($aCode,$c,1));
			$i++;
			if ($i > 2)
			{
			$i = 0;
			}
		}
		return ($sum%10);
	}

}
?>
So weit so gut... nur wie bekomme ich es jetzt hin, das ich per HTML den PHP Code nutzen kann?

Wenn ich ihn so aufrufe... bekomme ich nur Text angezeigt... ich brauche eine Oberfläche :-)
 
Zuletzt bearbeitet:

Swordmaster

Lieutenant
Dabei seit
Apr. 2004
Beiträge
844
Der PHP-Code wird serverseitig ausgeführt, d.h. du musst ihn auf einem PHP-fähigen Webserver testen...
 
Top