Serverseitige Weiterleitung mit if-Bedingung! Funktioniert? Oder Nicht?

  • Servus und aloha geehrte Damen und Herren der Webgestaltungskunst ;)

    Ich wollte mir auf meinem Blog eine Weiterleitung erstellen. Und zwar habe ich eine "Sommer-Version" und eine "Winter-Version". Ich habe mir schon vor ein paar Monaten (ebenfalls hier im Forum erfragt) ein Jahreszeiten-Skript geschrieben. Ich weiß sehrwohl, dass ich das aktualisieren muss, weil sich jedes Jahr die Tage für den Jahreszeitenwechsel ändern, aber darum geht es auch gar nicht. Ich sende hier mal einen Ausschnitt aus meinem Skript, damit ihr einen Eindruck bekommt, wie es aussieht, und wo ich die Weiterleitung einbinde:

    Jetzt ist es so, dass ich, wie ihr vllt seht, in die Case-Teile nach den Bedingungen die Weiterleitung setze. Und zwar mit folgendem Code:

    Code
    header("Location: http:pfadundso.de");
                exit();

    Die Weiterleitung gibt aber folgenden Fehler aus:
    "Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\mburcksc\index.php:2) in C:\xampp\htdocs\mburcksc\index.php on line 14"

    Zeile 14 ist unter anderem die oben per Kommentar markierte Zeile!

    Ich habe mal im Internet gesucht. Habe nichts passendes gefunden, aber vielleicht eine Lösung. Und zwar, dass man die serverseitige Weiterleitung ganz an den Anfang des Skripts stellen soll, damit der Client das richtig versteht. Das würde wiederum bedeuten, dass es so, wie ich es mache nicht geht, oder ?
    Muss ich also hier eine meta-Weiterleitung verwenden ? (Möchte die eigentlich nicht benutzen, aber wenns nicht anders geht) Oder gibt es einen anderen Weg ?

    Lg Marius

    edit1: Achso, ich sollte vllt noch hinzufügen, dass das Jahreszeiten Skript soweit auch funktioniert. Auf Variablenangabe habe ich hier jetzt verzichtet. Ich erzähle das, weil ich deshalb weiß, dass es daran nicht liegt. Benutze das Jahreszeiten-Skript auch in Textform auf der Hauptseite.


  • Ich habe mal im Internet gesucht. Habe nichts passendes gefunden


    Hahahahahah. google sagt mit headers already sent

    Ungefähr 5.710.000 Ergebnisse (0,14 Sekunden)

    Und da soll nicht passendes bei gewesen sein? Nochmal Hahahahahah

    (output started at C:\xampp\htdocs\mburcksc\index.php:2)
    PHP sagt dir sogar, wo das Problem ist. Vor header darf keinerlei Ausgabe passieren!

  • Du kannst auch einfach sagen, wo das problem ist, und nicht so sinnloses Zeug davorschreiben. Aber trotzdem danke für deine Antwort. Aber das ist doch genau das, was ich auch geschrieben hatte, also hättest du direkt darauf eingehen können, wenn du mein Problem bis zum Ende durchgelesen hättest!!!

    achso: und eine Lösung hab ich dadurch jetzt auch nicht bekommen... Weiß einer einen Weg ?

  • Baue dein Script so um, dass header vor jeder Ausgabe steht! Es macht sowieso keinen Sinn, etwas auszugeben, dass niemand wegen einer Weiterleitung sehen würde! Und da du schlauerweise nicht dein Script von Zeile 1 bis 14+n gepostet hast, kann dir auch niemand wirklich helfen! Soviel zum Thema sinnlos!

  • Unregistriert beruhige dich, wenn du von so einen Post genervt bist, dann schreibe lieber gar nicht.

  • pion.. grundlegend hat der gast da ja recht mit..
    klar kann man das in einen anderen ton kleiden, aber recht hat er dennoch.

    bermy zeig ma deine index.php her, damit man sehen kann woran es genau liegt

  • Bevor die Frage kommt:
    Einfach kann man es umgehen indem man die Seite buffert sprich
    ob_start() oben und ob_flush(); unten auf der Seite.

    Aber zeig ruhig den Code dann lernste was dabei

  • man muss doch nich jeden scheiss buffern...


    Richtig. Bei so einfachen Dingen ist ein Umstellen des Scriptes vermutlich völlig ausreichend. DasBuffering deutet in vielen Fällen auf eine chaotische Programmierung hin. Und aggressiv wollte ich nicht sein.

  • Richtig. Bei so einfachen Dingen ist ein Umstellen des Scriptes vermutlich völlig ausreichend. DasBuffering deutet in vielen Fällen auf eine chaotische Programmierung hin. Und aggressiv wollte ich nicht sein.



    Eine gute Software kommt nicht ohne Buffern aus! Technisch nicht möglich ist nun mal so in PHP.

    Man sollte also nicht auf eine Funktion schimpfen nur weil man sie selbst (leider) nicht nutzt.

    Selbst bei einem kleinen oder schlecht umgesetzten Programm macht Bufferung nichts (der gegenteil ist hier da fall)


    mfg

    2 Mal editiert, zuletzt von Pion (4. Februar 2011 um 13:11)

  • Ich schimpfe nicht auf diese Funktionen, ich halte sie meist nur für unnötig. So wie in diesem Fall.

  • Naja okay, ich sagte ihn ja er solle einen Code schreiben (ob er es noch machen wird ^^ ), da er damit mehr lernt

    Sie aber in seinem Fall einzusetzen finde ich nicht schlimm, da sie sein Problem sehr leicht umgeht, oft birgt sie als Nebeneffekt auch Geschwindigkeitsvorteile(oder Nachteile)

    Bei größeren Projekte und allen Projekte die auf gute Software Designs wie zb MVC setzen wird sie auf jeden Fall benötigt.

    Dann warten wir mal ab ... ;)

  • Eine gute Software kommt nicht ohne Buffern aus! Technisch nicht möglich ist nun mal so in PHP.

    Man sollte also nicht auf eine Funktion schimpfen nur weil man sie selbst (leider) nicht nutzt.

    Selbst bei einem kleinen oder schlecht umgesetzten Programm macht Bufferung nichts (der gegenteil ist hier da fall)


    mfg



    Aha, dann schreibe ich wohl nur schlechte Software. Ich habe noch nie output-buffering genutzt.

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • Muss ich mich SinnlosS anschliessen.
    Ich programmiere auch mehr oder weniger komplexe Software in PHP und habe bisher noch nie Buffering benutzt und alles ist eigentlich ganz gut rausgekommen.
    Man sollte aber lieber überlegen, was header() wirklich macht und dann es an ner Stelle angeben, wo noch keine Ausgabe getätigt wurde, als das zu umgehen mit einem Buffering.
    So weiss der User dann doch nicht, warums nicht funktionierte und Problem weder vollständig gelöst noch verstanden.

  • Das Argument, dass deine Software läuft bestimmt nicht wie gut sie läuft. (wäre ja schlimm wenn sie nicht gehen würde)
    Man verwendet Bufferung nicht um zu umgehen, dass ein Error kommt wenn man eine Weiterleitung im Code einbaut. Das System muss so aufgebaut sein, dass zuerst der ganze PHP Code ausgeführt wird und die Ausgaben am Schluss erfolgen, dazu braucht ich kein Buffern.
    Ich benötige Buffern für nachträgliches setzen von Headern (in meinen Controllern oder gar Plugins). Ich benutze Buffern um ein striktes einhalten des MVC Pattern, dh Inhalte/Views werden gebuffert und können dann dort eingebunden werden wo sie benötigt werden. Nicht meine View lädt die Controller sondern umgekehrt (kleine Ausnahmen vorhanden). Ich kann z.b. das layout rendern nachdem die Action gerendert ist, die möglicherweise Sachen im Layout verändert. Ich kann Filter über das HTML laufen lassen nachdem alles fertig ist.
    Dabei halte ich alles im allen die Regeln ein.

    Ich bin damit auch nicht der einzige, sei es ZendFramework, Kuchen... die machen das nicht anders

    Es bietet defakto keinen Nutzen diese Funktionen nicht zu Nutzen, im Gegenteil das macht eine Anwendung sehr undynamisch bei gängigen Konzepten


    mfg

  • Pion, wir reden hier von einem PiselScript eine Anfängers. Willst du ernsthaft bei soetwas das Buffering empfehlen? Das ist Humbug hoch 9.

  • Mag ja sein, dass das Zend Framework und andere das auch so machen. D.h. aber nicht, dass das der einzige Weg ist, und auch nicht, dass das der beste Weg ist.
    Such mal im APF z.B. nach OB. Das ist dann deiner Meinung nach auch keine gute Software?

    Es mag Einsatzgebiete geben wo die Verwendung von OutputBuffering Sinn macht. Aber pauschal zu sagen "gute Software kommt nicht ohne Buffering aus" ist völliger Schwachsinn.

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • Ich halte absolut nichts vom APF da hast du recht. Das Konzept gefällt mir nicht.
    Defakto halte ich eine auf Templates/Taglibs gestützte Software bzw Framework für kein gutes Konzept
    (Die php.de Mods sehen das natürlich anders)

    mfg

    Einmal editiert, zuletzt von Pion (4. Februar 2011 um 18:02)

  • Ist ja ok. Ich halte zum Beispiel absolut nichts vom ZendFramework. Das ändert nichts daran, dass solche pauschalen Aussagen einfach unpassend sind.

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook