session_start vor doctype ??

Lord Alien

Lt. Junior Grade
Registriert
Apr. 2007
Beiträge
258
Hallo Community,

wie die Überschrift schon sagt ist es mir nicht klar ob ich
PHP:
<?php session_start(); ?>
schon vor
HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
       "http://www.w3.org/TR/html4/strict.dtd">
setzen muss oder nicht.
Außerdem würde es mich interessieren was dieser Doctype überhaupt genau macht. Weiß nur das der irgendwie in fehlerfählen dem Server oder Browser, weiß net genau, sagt was für ne Datei des is. Bin mir aber nicht sicher ob das so stimmt und lass mich da von euch gerne korrigieren.

Freue mich auf eure Antworten :alien_alt:
 
Eine Doctype oder ein .dtd im Allgemeinen enthalten die Beschreibung der Sprache HTML.
Indem du dem Browser als erstes mitteilst welche Version von HTML du verwenden willst, machst du es ihm einfacher den Inhalt richtig darzustellen.

Gerade beim Internet-Explorer ist das sehr wichtig. Hier die Geschichte: IE5 hatte eine eher erbärmliche Render-Engine, welche zB div-Container völlig falsch dargestellt hat. Mit IE5.5 hat MS dann ein neues Box-Modell eingeführt. Problem war nun dass ja viele Seiten so geschrieben wurden dass sie auf dem IE5 richtig aussahen. Deswegen konnten sie ja ab jetzt die Seiten nicht einfach alle völlig anders (nämlich richtig) darstellen.
Somit einigte man sich darauf, dass der IE5.5 auch weiterhin im sogenannten Quirks-Modus arbeitet, solang man keinen Doctype angibt. Das gilt im Überigen auch für IE6. Und genau da steckt das Problem: Ohne Doctype stellt der IE6 die Seite völlig falsch dar.


Ganz abgesehen davon verlangt die HTML Spezifikation einen Doctype zu Beginn des Dokumentes. Du schreibst ohne Doctype also gar kein "richtiges" HTML.


EDIT: Völlig vergessen mit dem session_start() ^^
Wie wärs mit probieren?? ;)
 
Das kommt drauf an. Wenn Session-Cookies verwendet werden, muss session_start() aufgerufen werden, bevor irgendwelche Daten (z.B. dein Doctype) an den Browser geschickt werden. Ist das nicht der Fall (etwa weil die Session-ID ausschließlich per GET übergeben wird), kann der Aufruf auch später erfolgen.
 
session_start() muss wie jede Cookie-setzende Funktion vor der Ausgabe von Daten aufgerufen werden.

EDIT: Da war ein anderer schneller. ;)
BTW: Es ist default-Einstellung, dass Sessions Cookies verwenden. Wenn du die Funktion nach der Ausgabe aufrufst, dann musst du explizit auch die Konfigurationseinstellungen ändern.
BTW2: Den Thread zu verfassen hat länger gedauert als es selbst auszuprobieren. ;)
 
Zuletzt bearbeitet:
Zurück
Oben