<html>
<head>
<title>Fahrplanauskunft</title>
</head>
<body>
<?
//wie auch schon in der letzten Version enthalten eine
//Funktion um die Kompatibilität mit php 4 aufrecht zu erhalten,
//einziger fehler die bennenung
function my_str_split($string,$split){
$return = array();
$count = 0;
$pos = 0;
$new = 0;
while(strpos($string,$split,$pos) > 0){
$new = strpos($string,$split,$pos);
$item = trim(mb_substr($string,$pos,$new-$pos));
$return[$count] = $item;
$count++;
$pos = $new+1;
}
$item = trim(substr($string,$pos));
$return[$count] = $item;
return $return;
}
//hier werden die geeigneten Fehler ausgegeben
function print_error($err,$para){
switch($err){
case -1: echo "<h2>Es ist ein unbekannter Fehler aufgetreten</h2>"; break;
case 0: echo "<h2>Eingabe in Ordnung: </h2>"; break;
case 1: echo "(".$para[0].")<h2>Die eingegbene Stadt: ".$para[1]." ist nicht erlaubt, nur:</h2><h3>Dortmund, Essen oder Bochum</h3>"; break;
case 2: echo "(".$para[0].")<h2>Die erkannte Hausnummer: ".$para[2]." hat ein falsches Format</h2>"; break;
case 3: echo "(".$para[0].")<h2>Das Eingabeformat wurde nicht erkannt</h2><h3>Stadt,Straße Hausnummer<br>Stadt,Straße<br>Hausnummer</h3>"; break;
}
}
//funktion um die art der eingabe zu bestimmen.
function getTyp($eingabe) {
//typ als fehler besetzten
$type=0;
//welche position hat das Komma
$pos_comma = strpos($eingabe,",",0);
//welche position hat das Leerzeichen
$pos_space = strpos($eingabe," ",0);
//sollte das erste leerzeichen hinter dem Komma sein, dann neu suchen
if($pos_space == $pos_comma+1){
$pos_space = strpos($eingabe," ",$pos_space+1);
}
if(!$pos_comma && !$pos_space){
if($eingabe == ""){
$type = 0;
} else {
$type = 3;
}
}
else if($pos_comma && !$pos_space){
//testen ob noch ein leerzeichen vorhanden ist
if(!strpos($eingabe,",",$pos_comma+1)){
$type = 2;
}
}
else if($pos_comma && $pos_space){
//testen ob noch ein leerzeichen vorhanden ist
if(!strpos($eingabe,",",$pos_comma+1) && !strpos($eingabe," ",$pos_space+1) ){
$type = 1;
}
}
//zurück geben des typen
return $type;
}
function getAnfrage($suffix,$eingabe,$type,$anfrage){
switch($type){
case 3:
$anfrage["haltestelle".$suffix] =$eingabe;
break;
case 2:
$arr = my_str_split($eingabe,",");
$anfrage["stadt".$suffix] = $arr[0];
$anfrage["strasse".$suffix] = $arr[1];
break;
case 1:
$arr = my_str_split($eingabe,",");
$anfrage["stadt".$suffix] = $arr[0];
$arr = my_str_split($arr[1]," ");
$anfrage["strasse".$suffix] = $arr[0];
$anfrage["hausnummer".$suffix] = $arr[1];
break;
case 0:
$anfrage = false;
break;
default:
$anfrage = false;
break;
}
return $anfrage;
}
//Ueberprüft ob die Stadt in ordnung ist
function checkStadt($stadt){
if ($stadt == "essen" || $stadt == "bochum" || $stadt == "dortmund" ) {
return true;
} else {
return false;
}
}
//Ueberprüft ob die Hausnummer ein Zahl ist
function checkNumber($nr){
if (is_numeric($nr) == false) {
return false;
} else {
return true;
}
}
//überprüft die eingeben werte
function checkAnfrage($suffix,$type,$anfrage){
switch($type){
case 3:
$err_code = 0;
break;
case 2:
if (!checkStadt($anfrage["stadt".$suffix])){
$err_code=1; //Stadt fehler
}
break;
case 1:
if (!checkStadt($anfrage["stadt".$suffix])){
$err_code=1; //Stadt fehler
}
if (!checkNumber($anfrage["hausnummer".$suffix])){
$err_code=2; //Hausnummer fehler
}
break;
default:
$err_code = -1;
break;
}
return $err_code;
}
//auslesen der get daten
$von = $_GET["von"];
$nach = $_GET["nach"];
//ueberfluessige leerzeichen entfernen
$von = strtolower(trim($von));
$nach = strtolower(trim($nach));
//ist alles in Ordnung?
$anfrage = array();
$para = array();
$type = getTyp($von);
if($type > 0){
$anfrage = getAnfrage("von",$von,$type,$anfrage);
$err = checkAnfrage("von",$type,$anfrage);
if(!($err == 0)) {
$para[0] = "von";
$para[1] = $anfrage["stadtvon"];
$para[2] = $anfrage["hausnummervon"];
}
} else {
$err=3;
}
$type = getTyp($nach);
if($type > 0 && $err == 0){
$anfrage = getAnfrage("nach",$nach,$type,$anfrage);
$err = checkAnfrage("nach",$type,$anfrage);
if(!($err == 0)) {
$para[0] = "nach";
$para[1] = $anfrage["stadtnach"];
$para[2] = $anfrage["hausnummernach"];
}
} else if($err == 0){
$err = 3;
}
//ansonsten war ein fehler bei den von daten, daher wird nichts
//mehr gemacht, damit dieser ausgeben werden kann
//werden ohne überprüfung übernommen
$anfrage["zeit"] = $_GET["zeit"];
$anfrage["datum"]= $_GET["datum"];
//auswertung
if($err == 0){
echo "<h3>Folgende Daten wurden erfolgreich eingelesen:</h3><table border=\"1\"><tr><th>Attribut</th><th>Wert</th></tr>";
foreach($anfrage as $name=>$value){
echo "<tr><td>".$name."</td><td>".$value."</td></tr>";
}
echo "</table>";
} else {
//ausgabe bei fehlern
print_error($err,$para);
}
?>
</body>
</html>