<link> verrutscht in in <body>
dri
- php
Hallo,
Ich habe zum ersten mal eine PHP Seite mit mehreren Sprachdateien erstellt.
über ein $_GET['lang'] erfrage ich welche Sprache angezeigt werden soll.
Als Standard ( falls keine Sprache angegeben oder gewünschte Sprache nicht gefunden wird) englisch(EN) benutzt.
Dazu benutze ich folgendes Script-teil:
if(!isset($_GET['lang'])){
$language = "EN";
}else{
$language = $_GET['lang'];
}
function language_file(){
global $language;
if (!is_file($language."/lang.inc.php")) {
return "EN/lang.inc.php";
}
return $language."/lang.inc.php";
}
include(language_file());
Dies funktioniert auch, soweit ich es anhand der ausgegeben Sätze erkennen kann.
Allerdings entsteht bei anderen Sprachen als englisch eine leere Zeile am oberen Bildrand.
Im Quelltext habe ich keine Unterschiede erkannt. Allerdings zeigt mir Firebug an dass alle <link> Zeilen sich im Body befinden, obwohl sie fest im <head> geschrieben sind.
Ich habe schon versucht das EN im folgenden auf DE zu ändern, aber das ändert auch nichts.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
Hat jemand eine Ahnung woran es liegen könnte?
Danke im voraus.
dri
Hi,
Im Quelltext habe ich keine Unterschiede erkannt. Allerdings zeigt mir Firebug an dass alle <link> Zeilen sich im Body befinden, obwohl sie fest im <head> geschrieben sind.
was sagt der Validator? Wie lauten die URLs der Seiten?
Cheatah
was sagt der Validator?
Es kommt eben keine Fehlermeldung, ich sehe nur dass die <link>'s an der falschen Stelle stehen
So müsste es aussehe:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="ads/rss" rel="alternate" type="application/rss+xml" title="RSS Feed" />
<link rel="shortcut icon" type="image/ico" href="/images/favicon.ico" />
<link href="css/style.css" rel="stylesheet" type="text/css" charset="UTF-8">
</head>
<body>
...
Und so sieht es ( nur im Firebug ) aus:
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
</head>
<body>
<link title="RSS Feed" type="application/rss+xml" rel="alternate" href="ads/rss"/>
<link href="/images/favicon.ico" type="image/ico" rel="shortcut icon"/>
<link charset="UTF-8" type="text/css" rel="stylesheet" href="css/style.css">
...
Ich würde ja verstehen dass deswegen die CSS-Formatierung nicht greift, und ich diese leere Zeile erhalte, aber alle anderen Foramtierungen sind normal.
Wie lauten die URLs der Seiten?
Die Seite ist noch nicht online, und da es sich um eine Projektarbeit handelt, kann ich sie auch leider nicht online setzen.
dri
Hi,
»» was sagt der Validator?
Es kommt eben keine Fehlermeldung, [...] So müsste es aussehe:
unwahrscheinlich. Du mischst HTML und XHTML.
»» Wie lauten die URLs der Seiten?
Die Seite ist noch nicht online, und da es sich um eine Projektarbeit handelt, kann ich sie auch leider nicht online setzen.
Dann poste bitte den _vollständigen_ (und tatsächlichen) Code einer minimalen Seite, auf der das Problem nachvollzogen werden kann.
Cheatah
Ich habe jetzt beim Versuch die sensiblen Daten aus dem Code raus zunehmen bemerkt dass sobald ich eine Datei include diese leere Zeile entsteht.
Komischer weise ist dies nicht passiert beim includen der englischen Sprachdatei.
Ich danke dir für deine Hilfe, ich glaube ich finde den Rest jetzt auch so raus ... irgendwie.
dri
Hi,
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="ads/rss" rel="alternate" type="application/rss+xml" title="RSS Feed" />
Wenn Du HTML benutzt (statt XHTML), dann beendet / das link-Element. Das > ist Text. Im head darf kein freier Text stehen. Also wird implizit head geschlossen und body geöffnet.
Alle weiteren Link-Elemente stehen somit im body.
Allerdings müßte das, wenn Du die Seite validierst, zu Fehlern führen, denn link-Elemente sind im body nicht erlaubt, außerdem machst Du
</head>
<body>
hier mitten im body head zu, welches nicht offen ist, und body ist im body auch nicht erlaubt.
Wenn Du dagegen XHTML benutzt, käme es bei diesen Zeilen
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="ads/rss" rel="alternate" type="application/rss+xml" title="RSS Feed" />
zur Fehlermeldung, daß meta keine link-Elemente enthalten darf.
»» was sagt der Validator?
Es kommt eben keine Fehlermeldung, [...]
Das kann ich mir nicht vorstellen.
Hast Du den Validator überhaupt benutzt?
cu,
Andreas