Encoder: Im Script die Fehlerseite ausgeben

Hallo

Ich habe ein Script das anhand eines Parameters in der URL den auszugebenden Inhalt bestimmt. Wenn dieser Parameter nicht in einem vorgegebenen Wertebereich liegt, sollte am besten die Fehlerseite angezeigt werden, die auch dann kommt wenn eine falsche Unterseite angezeigt wird.
Zum Beispiel wenn man eingibt http://example.com/script.php?page=blödsinn (script.php gibt es, page=blödsinn ist ungültig) dann soll das selbe kommen wie bei http://example.com/gibtsnicht
Geht das?

  1. Geht das?

    Du kannst nen HTTP-Error 404 senden. http://php.net/manual/de/function.header.php

    1. Du kannst nen HTTP-Error 404 senden. http://php.net/manual/de/function.header.php

      Könnte man, bei fehlerhaften Parametern könnte man aber einen 400 senden. (http://de.wikipedia.org/wiki/HTTP-Statuscode)

      1. Könnte man, bei fehlerhaften Parametern könnte man aber einen 400 senden. (http://de.wikipedia.org/wiki/HTTP-Statuscode)[!sic]

        Wäre tatsächlich schöner, oder 422.

        1. Ok ich erkläre noch ein bisschen genauer was da passiert :-)

          Der Parameter wird von mod_rewrite eingefügt. Zum Beispiel http://example.com/produkte/x653 wird umgesetzt in products.php?nr=x653. Daher die Idee, den selben Fehler zu bringen wie bei http://example.com/proooodukte oder so, was für den Benutzer den selbe Aufbau hat. Beides sieht nach Unterseite aus.

          1. Der Parameter wird von mod_rewrite eingefügt. Zum Beispiel http://example.com/produkte/x653 wird umgesetzt in products.php?nr=x653. Daher die Idee, den selben Fehler zu bringen wie bei http://example.com/proooodukte oder so, was für den Benutzer den selbe Aufbau hat. Beides sieht nach Unterseite aus.

            Dann ergibt 404 meiner bescheidenen Meinung nach am meisten Sinn.

          2. Der Parameter wird von mod_rewrite eingefügt. Zum Beispiel http://example.com/produkte/x653 wird umgesetzt in products.php?nr=x653. Daher die Idee, den selben Fehler zu bringen wie bei http://example.com/proooodukte

            Zwei Fragen, die Du Dir stellen musst:

            1. Wer oder was gibt denn bislang die Fehlerseite aus, bei http://example.com/gibtsnicht. Und 2) woraus besteht der Fehler (Statuscode und Inhalt der Fehlerseite).

            Ich nehme an, zu 1) das machst Du gar nicht selbst, sondern macht der Server (zum Beispiel über "Standarddokumente" (Win Server) oder ähnliches von Apache, etc.). Ich nehme an zu 2) ein 404 Code wird gesendet (kannst Du einfach mit Firebug ermitteln) und Du hast irgendwo eine html Datei geschrieben, die dann angezeigt wird?!?! Nur Vermutungen, es gibt zig andere Wege, das zu tun.

            Wenn dem ungefähr so ist:
            Zwei Dinge sind zu tun, wenn Du die Fehlerseite auch bei einer falschen Produktnr. anzeigen möchtest:

            1. musst Du irgendwie verhindern, dass bis zu der Prüfung der Produktnummer in der DB _irgendein_ Header gesendet wird, da doppelte Header senden nicht möglich ist. Wenn dein Backend, CMS, Script, whatever bis dahin bereits einen 200 Header gesendet hat, musst Du das irgendwie umbauen.
            2. musst Du dann bei einer nicht vorhandenen Produktnr z.b einen 404 Header senden (mit php: header("HTTP/1.0 404 Not Found");) und der Inhalt der Fehlerseite angezeigt werden (z.B mit echo file_get_contents()). Natürlich gibt es noch andere Wege (Seitentemplate wird nur mit Fehlermeldung gefüttert, etc.).

            Cheers,
            Baba

            1. Ich nehme an, zu 1) das machst Du gar nicht selbst, sondern macht der Server (zum Beispiel über "Standarddokumente" (Win Server) oder ähnliches von Apache, etc.).

              Richtig, das lass ich den Server selbst tun.
              Genau dieses würde ich gerne per Code auslösen, sofern das möglich ist.
              So wirklich glaub ich ja nicht ganz dran, denn die 404 kommt vom Server und der wird sich kaum über PHP triggern lassen. Aber hätt ja sein können.
              Selber den Header schicken ist natürlich kein Problem.

  2. hi,

    Geht das?

    Selbstverständlich wirst Du eine Fehlerseite ausgeben, wenn unerlaubte oder nicht konfigurierte Parameter verwendet werden.

    Die Grundlage dafür ist eine Kontrollstruktur über diejenigen Parameter, welche Du als Schlüsselparameter für eine Webressource festlegst.

    Hotti

    --
    Turm von Pisa umgefallen? Macht nichts, war sowieso schief (Danke Bruno).
    1. Hallo

      Die Grundlage dafür ist eine Kontrollstruktur über diejenigen Parameter, welche Du als Schlüsselparameter für eine Webressource festlegst.

      Die habe ich. Ich weiß nur nicht wie ich den Server zu dieser Meldung bewege, ohne die sonstige Fehlerseite nachzubauen.
      Am liebsten wäre mir etwas dieser Art:

      if (nixGut($parameter))
        print(Fehlerseite so wie sie sonst auch erscheinen würde);

      1. hi,

        if (nixGut($parameter))
          print(Fehlerseite so wie sie sonst auch erscheinen würde);

        OK, die Kontrollstruktur. Idee: Alles was ausgegeben werden soll, nicht auf print sondern in einen eigenen Puffer (out_buffer) schreiben. Dann legst Du noch einen Puffer an, für die Fehlermeldungen (error_buffer).

        Wenn am Ende alles ausgegeben werden soll, guckt Dein Programm zuerst in den error_buffer und wenn da was drin steht, erzeugst Du damit die Fehlerseite.

        Hotti

        --
        Wenn der Wasserkesel singt, ist es draußen bitterkalt.