Security
Erfahrenes Mitglied
Hallo,
ich hab da so ein kleiner PHP-Script geschrieben, welches die Personalausweißnummer auf die Gültigkeit überprüft und ob man mindestens 16 Jahre alt ist.
Es ist in zwei Teile geteilt, zum einen die Indexdatei(index.php) zum ausfüllen und ein File(check.php) zum Prüfen der Angaben.
Index.php:
check.php:
So das sieht für mich eigentlich ganz gut aus, aber es geht nicht.
Wäre nett wenn sich jemand die Zeit nimmt und mir unter die Arme greift.
ich hab da so ein kleiner PHP-Script geschrieben, welches die Personalausweißnummer auf die Gültigkeit überprüft und ob man mindestens 16 Jahre alt ist.
Es ist in zwei Teile geteilt, zum einen die Indexdatei(index.php) zum ausfüllen und ein File(check.php) zum Prüfen der Angaben.
Index.php:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Personalausweißnummer</title>
</head>
<body>
<form name="Anmeldung" enctype="text/plain" method="post" action="check.php">
<input type="text" name="serial" maxlength="10" width="10" />D‹‹
<input type="text" name="birthday" maxlength="7" width="7" />‹
<input type="text" name="expiration" maxlength="7" width="7" />‹‹‹‹‹‹‹
<input type="text" name="all" maxlength="1" width="1" />
<br>
<input type="submit" value="ID Checken" />
<input type="reset" value="Zurücksetzten" />
</form>
</body>
</html>
check.php:
PHP:
<?php
function check_number($number=0){
$p = 7;
for($i=0; $i < strlen(strval($number)); $i++){
$return += substr($number[$i]*$p, -1);
if($p==1) $p=7;
elseif($p==3) $p=1;
elseif($p==7) $p=3;
}
return $return;
}
function perso_check($id=0){
$array = explode(" ", $id);
if(substr(check_number(substr($array[0], 0, 9)), -1)==substr($array[0], 9, 1)){ $check["serial"] = true; }
if(substr(check_number(substr($array[1], 0, 6)), -1)==substr($array[1], 6, 1)){ $check["birthday"][0] = true; }
if(substr(check_number(substr($array[2], 0, 6)), -1)==substr($array[2], 6, 1)){ $check["expiration"][0] = true; }
if(time() < mktime(0,0,0, substr($array[2], 2, 2) , substr($array[2], 4, 2) , substr($array[2], 0, 2))){ $check["expiration"][1] = true; }
if(substr(check_number(substr($array[0], 0, 10).substr($array[1], 0, 7).substr($array[2], 0, 7)), -1)==$array[3]){ $check["all"] = true; }
if($check["serial"] == true && $check["birthday"][0] == true && $check["expiration"][0] == true && $check["expiration"][1] == true && $check["all"] == true){ return true; }
else { return false; }
}
function age_check($age=0){
$birth = array(substr($age, 0, 2), substr($age, 2, 2), substr($age, 4, 2));
$date = array(date(y), date(m), date(d));
$date[0] = $date[0] - 16;
if($date[0] < $birth[0]){
return false;}
elseif($date[1] < $birth[1]){
return false;}
elseif($date[2] < $birth[2]){
return false;}
else{
return true;};
}
# Aufruf
$sum = $_POST['serial'] + "D " + $_POST['birthday'] + " " + $_POST['expiration'] + " " + $_POST['all'];
if(perso_check($sum)==true) {
echo "Personalnummer korrekt";
}
elseif(age_check($_POST['birthday'])==false) {
echo "Du bist nicht alt genug.";
}
else {
echo "Personalnummer falsch";
}
?>
So das sieht für mich eigentlich ganz gut aus, aber es geht nicht.
Wäre nett wenn sich jemand die Zeit nimmt und mir unter die Arme greift.