2012-04-12 5 views
0

Um einen IE9 Fehler zu beheben ich die Erklärung ‚DOCTYPE‘ setzen musste am oberen Rand der Seite:müssen session_start() vor <DOCTYPE HTML nennen ..... etc

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<?php 
    require_once 'navBar.php'; 
?> 

Indem ich den DOCTYPE an die Spitze der Datei setzte, reparierte ich einen IE9-Fehler.

Der 'Fehler' in IE9 war - ohne die DOCTYPE an der Spitze der Datei - jedes div, das Inline-Block-Stil hatte, würde den Inline-Block-Stil ignorieren und wäre vertikal gestapelt.

Ich habe 3 divs auf der Seite mit Inline-Block-Stil und in Firefox und im Android Browser erscheinen die 3 divs mit Inline-Block in einer Reihe, horizontal von links nach rechts.

Aber in IE9, musste ich den DOCTYPE als erste Zeile hinzufügen (nicht die zweite Zeile, nicht nach dem PHP-Abschnitt an der Spitze - DOCTYPE musste die 1. Zeile sein).

DANN und nur dann wird IE9 den Inline-Block-Stil honorieren.

DAS PROBLEM IST - innerhalb navbar.php rufe ich session_start().

Wie Sie wissen, muss session_start() ALSO die erste Zeile sein, bevor eine Browser-Ausgabe gesendet wird. Du bekommst sonst einen errmsg. dies wie:

Warning: session_start() [function.session-start]: Cannot send 
    session cache limiter - headers already sent (output started at 
    /homepages/42/d329883313/htdocs/ourSite/landing_page.php:2) in 
    /homepages/42/d329883313/htdocs/ourSite/navBar.php on line 1 

(ps meine IDE speichern Dateien als UTF-8, so dass der BOM ist nicht das Problem Und ich habe bereits überprüft - ich zusätzliche Leerzeichen zwischen dem Ende des DOCTYPE nicht überall hat. und der Beginn der session_start() entweder die session_start() bricht wegen der DOCTYPE etwas an den Browser gesendet wird)

meine Frage:..

Wie kann ich meinen Inline-Block und das DOCTYPE halten und session_start()?

Es ist schlecht, dass das Funktionieren eines einfachen UI-Stils zwei "MUST-BE-ON-LINE-1" Codeelemente gegeneinander schlägt (DOCTYPE und session_start).

+0

Haben Sie versucht, oben auf der Seite ohne zusätzliche Leerzeichen? PHP ist Server-Seite und HTML ist Client-Seite, so dass die PHP sollte weg sein, bevor IE9 die Seite interpretiert. –

+0

Wenn das Ohne Leerzeichen, ignoriert IE9 meinen Inline-Block-Stil. Nicht sicher warum. Vielleicht legt der Webserver nach der Verarbeitung des PHP etwas oben auf der Seite, ich weiß es nicht. – wantTheBest

+0

fair genug, aber wenn Sie sagen, Sie haben versucht, es direkt nach, meinst du nach der require_once oder nach session_start (für sich)? –

Antwort

0

Lösung war von require_once 'somefile.php';

zu

require_once ('somefile.php');

Obwohl Firefox und der Android-Browser mit dem ersten Stil gut waren, hatte IE9 eine Eigenart: Es würde den Inline-Block-Stil für divs ignorieren.

Verwandte Themen