(Fast) Fehlerseite auf Lima-city
Inzwischen wissen bereits sehr viel, dass es mit ".htaccess" möglich ist, eigene Fehlerseiten festzulegen. Ebensoviele wissen auch, dass ".htaccess" auf Lima-city verboten ist. Schon sehr viel mal ist es nun vorgekommen, dass User danach fragen, wie man dennoch eine Fehlerseite macht. Die Idee zu diesem Tutorial hat mir die Seite von Alopex gegeben. Beim Aufruf der Seite "http://alopex.lima-city.de/index.php/irgendwas.xyz" erscheint eine 404-Fehlermeldung!
Das ganze Geheimnis liegt an "index.php" - index.php ist gar nicht wie angenommen ein Verzeichnis sondern ganz einfach eine PHP-Datei; irgendwas.xyz ist nur ein Parameter. Eigentlich klingt das gar nicht so schwierirg. Aber wie wird nun dieser Parameter ausgelesen?! Die Lösung ist recht einfach; man muss nur mal auf die richtige Idee kommen ;)
Das Problem lässt sich nicht mit nur einer Anweisung lösen. Man ist dabei auf die $_SERVER Variable angewiesen. Das erste was wir erstellen ist folgendes File:
<?
$full_path = $_SERVER['PHP_SELF'];
echo "$full_path";
?>
Das speichern wir nun mal in unserem Hauptverzeichnis unter dem Namen "404.php" ab. Nun rufen wir das Script auf "http://user.lima-city.de/404.php" Das Script sollte eine Ausgabe wie
/home/user/html/404.php machen. Wenn wir das Script unter "http://user.lima-city.de/404.php/parameterfile.php" aufrufen, so erzeugt es die Ausgabe "/home/user/html/404.php/parameterfile.php". Damit hätten wir den ersten Schritt geschafft - Das Parameter wird angezeigt! Doch wie krigen wir das Zeug vorher weg?! Gucken wir uns mal folgendes Script an:
<?
$full_path = $_SERVER['PHP_SELF'];
echo "$full_path<br>";
$script_path = $_SERVER['SCRIPT_NAME'];
echo "$script_path";
?>
Gleich wie vorher rufen wir das Script wie folgt auf: "http://user.lima-city.de/404.php/parameterfile.php". Diesmal erhalten wir ein ganz anderes Ergebnis:
Daraus lernen wir, dass die Servervariable "PHP_SELF" den ganzen Pfad ausgiebt und dass die die Variable "Script_name" nur den Pfad zum Script ausgiebt, von dem der Code ausgeführt wird. Nun müssen wir aber etwas tun, um an das Parameter alleine zu kommen; ich habe es folgendermassen gelöst:
<?
$full_path = $_SERVER['PHP_SELF'];
$script_path = $_SERVER['SCRIPT_NAME'];
$parameter = str_replace($script_path, "", $full_path);
echo $parameter;
?>
Durch das Ersetzen eines Teiles des Pfades mit nichts, haben wir es geschaft, nur das Parameter anzuzeigen; Evt. können wir auch noch
$parameter = str_replace("/", "", $parameter);
anwenden und somit nur das reine Parameter anzeigen ohne Slashs. Damit hätten wir das reine Paramter ausgelesen. Nun aber zum Script, mit dem wir die Fehlerseite gestalten können:
<?
$full_path = $_SERVER['PHP_SELF'];
$script_path = $_SERVER['SCRIPT_NAME'];
$parameter = str_replace($script_path, "", $full_path);
$parameter = str_replace("/", "", $parameter);
if(file_exists($parameter))
{
include($parameter);
}
else
{
echo "<b>Fehler 404 - File not found!</b><br><br>Die aufgerufene Datei \"$parameter\" ist leider nicht vorhanden! Überprüfen sie die Adresse oder kontaktieren sie den Ersteller der Seite!";
}
?>
So... Jetzt brauchen wir noch eine weitere Datei, die im gleichen Verzeichnis liegt wie die "404.php". Diese müssen wir nicht extra erstellen, es kann auch eine bereits bestehende Datei sein. Zumbeispiel "igiwas.php" Wir rufen nun follgenden Pfad auf: http://user.lima-city.de/404.php/igiwas.php - Die Datei igiwas.php wird angezeigt! Wenn wir nun eine nicht bestehende Datei aufrufen, kommt die vorher eingegebene Fehlermeldung!
Tja... somit wären wir wiedermal mit etwas fertig. Eigentlich ist das ganze eine kleine Sache, aber bis man überhaupt mal auf einen geeigneten Lösungsweg kommt, kann es lange dauern...
Ich hoffe, dass dieses Tutorial leicht verständlich und trotzdem lehrreich und spannend war! Evt. könnte es zu Fehlern bei der Anzeige des Quellcodes kommen; deshalb habe ich das Tutorial auch gleich noch online gestellt: http://sebigisler.lima-city.de/fehlerseite.php Es kann ausserdem auch unter http://sebigisler.lima-city.de/404.php/irgendwas getestet werden!
Viel Spass wünscht euch Sebastian Gisler!
Hinweis: Auf Anfrage darf das Tutorial auf ihrer eigenen Seite verwendet werden!