Entwickler-Ecke

Internet / Netzwerk - Eigene 404-Seite?


Svenkan - So 01.04.07 13:44
Titel: Eigene 404-Seite?
Folgendes: Ich habe für unsere Schulcommunity ein Programm erstellt, womit man den aktuellen Vertretungsplan abrufen kann.
Da dieser mit Untis geschrieben wird, wird immer nur für die Klassen eine Datei erstellt, wo auch wirklich eine Änderung vorliegt.
Sollte nun eine Klasse gewählt werden, wo nichts ausfällt oder geändert ist, möchte ich nun nicht die Standard-404 vom IE, sondern eine eigene verwenden.
Ist dies möglich?


mkinzler - So 01.04.07 13:47

Welcher Webserver?


Svenkan - So 01.04.07 13:55

Ach, muss man das über den Server machen?
Geht das nicht direkt aus dem Programm heraus?
Das man ihm sagt, falls Datei xy nicht vorhanden ist, gebe abc aus?
OK, ich habe bei mir aufm Server das über eine .php gemacht. Aber der Plan liegt aufm Schulserver und da müsste man dann extra hinterher laufen.
Aber ich glaube, dass das ein Windows '03-Server ist.


LeoLöwe - So 01.04.07 16:53

Das öffentlich Institutionen immer so viel Geld für drittklassige Software verjubeln...

Na was solls.
Vorschlag: Stell den Kram auf Apache um, dann klappts auch mit der 404 Seite!

Oder: Erstelle doch einfach leere Seiten bzw. lass das Programm einfach eine Info hinschreiben

Oder: Erstelle ein PHP-Script das nach Anfrage die Pläne aus einer DB holt. Wenn kein Eintrag vorhanden ist wird halt ein Hinweis ausgegeben


Svenkan - So 01.04.07 17:00

OK, ich hatte mich vertan.
Die hams wohl mittlerweile umgestellt. ^^
Apache/1.3.27 <~~~ das steht in meiner Fehlermeldung bei Opera. *g*
Na ok.
Datenbank..sowas kennen die bei uns anna Schule leider so gar nicht. :D (unsere sog. Informatiker ham teilweise weniger Ahnung als ihre Schüler :/).
Das Problem ist ja auch, das Untis die Pläne halt in .html-Dateien schreibt und ich ehrlich gesagt auch nicht wüsste, dass es dort irgendeine SQL-Unterstützung gäbe.
Gibt es denn eine ähnliche Funktion wie in PHP like if(file_exists(blaaa))?


Jetstream - So 01.04.07 17:13

Lässt sich mit .htaccess regeln.
zB wie hier: http://www.lerneniminternet.de/htm/fehler_404.html


Svenkan - So 01.04.07 17:20

Per .htaccess wär ja alles kein Problem.
Aber ich wollte das einfach 'programmgesteuert' machen. Das man das halt über eine Art file_exists-Funktion macht.
Leider finde ich dazu auch per Google rein gar nichts über eine derartige Funktion. :(
Oder bin ich einfach nur total blind?
Oder ginge es irgendwie darüber, dass man schaut, ob eine Verbindung des Webbrowsers erfolgreich verlaufen ist?


Jetstream - So 01.04.07 17:22

Google liefert http://jendryschik.de/wsdev/fehlerseiten/ gleich als erstes bei Suche nach "apache eigene 404"


Timosch - So 01.04.07 17:27

user profile iconJetstream hat folgendes geschrieben:
Google liefert http://jendryschik.de/wsdev/fehlerseiten/ gleich als erstes bei Suche nach "apache eigene 404"

Also, dass er das nicht servergesteuert machen will, hat er ja jetzt wohl oft genug gesagt...

Es gibt keine IE-eigene 404-Seite. Die 404-Seite wird vom Server geliefert. Wie rufst du die Seiten ab? Über TWebBrowser? Dann teste, ob der Inhalt der 404-Seite eures Schulservers entspricht(über TWebBrowser.Document), und lad dann über Navigate eine andere Seite.


Svenkan - So 01.04.07 17:38

Jap, über TWebBrowser.
Wie meinst du das mit dem entsprechen?
Ob die 404 was entspricht? Das hab ich jetz nicht wirklich rauslesen können.

/edit: Ach so! Der Inhalt der geladenen Seite dem des 404-Dokuments?
Jetzt hab ich kapiert. ;)
Mit welchem Befehl lässt sich dies denn vergleichen?


Timosch - So 01.04.07 18:08

Den Inhalt der geladenen Seite überprüfst du - wie ich schon sagte - mit TWebBrowser.Document.


Hack Gott - Di 03.04.07 23:23

Also so wie ich des Verstanden hab willst du in PHP überprüfen ob eine Bestimmte Datei existiert und das klappt so:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
<?php
if (!file_exists('Stundenplan9b.txt')) {
echo 'Es fällt nichts aus';
} else {
echo 'Es fällt folgendes aus:<br>';
readfile('Stundenplan9b.txt');
}
?>


Timosch - Mi 04.04.07 10:57

user profile iconHack Gott hat folgendes geschrieben:
Also so wie ich des Verstanden hab willst du in PHP überprüfen ob eine Bestimmte Datei existiert

Neeeeeein. Eben genau das will er nicht. Er will von seinem eigenen PC aus mit TWebBrowser eine Datei von einem Server öffnen, und wenn sie nicht existiert, eine andere anzeigen. Auf den Server hat er vermutlich gar keinen Zugriff.


Hack Gott - Mi 04.04.07 12:18

Oh, ok war schon spät gestern abend...

Trotzdem würde ich mit seinem Programm immer nur eine PHP Datei vom Server aufrufen. Die soll dann anzeigen ob etwas ausfällt oder nicht.

Wenn du die ganzen Infos aber in deinem Programm grafisch darstellen willst würde ich die PHP Datei so schreiben, dass sie KEINEN Html Code generiert, sondern z.B. für keinen Eintrag nur ein -. Dann lädts du das ganze mit Delphi runter und wertest die Infos aus:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
uses URLMon;

procedure PlanDownloaden(Klasse, DownloadTo: String);
begin
DeleteURLCacheEntry(PChar('http://meineSchule.de/meinProgramm/download.php?klasse='+Klasse)); //Löscht im Chache falls bereits runtergeladen (damit auf jeden Fall neu heruntergeladen wird
URLDownloadToFile(nil, PChar('http://meineSchule.de/meinProgramm/download.php?klasse='+Klasse), PChar(DownloadTo), 0nil); //Lädt die Datei runter
end;


Ein Beispielsaufruf wäre dann:

Delphi-Quelltext
1:
PlanDownloaden('9b''temp9b.txt');                    


Dann lädst du die Datei und wertest den Inhalt aus.


UGrohne - Mi 04.04.07 14:58

Das mit dem Vergleichen ist keine gute Idee. Du musst den ReturnCode des Webbrowsers auswerten. TWebbrowser müsste entsprechend auch irgendwo eine Eigenschaft haben, wo der ReturnCode vom Webserver drinsteht. Wenn der 404 ist, dann kannst Du Deine Fehlerseite anzeigen.