Anzeigeproblem bei Einbindung einer Session

  • Themenstarter Themenstarter iioopp1122
  • Beginndatum Beginndatum
I

iioopp1122

Hallöchen, liebe Leute,

ich habe folgendes Problem:
Ich habe normale und funktionierende html-Seiten. Jetzt habe ich ein Login zu einer Datenbank eingebunden und soll zu Beginn jeder Seite folgendes coden:

PHP:
<?php
session_start();

if(!isset($_SESSION["username"]))
   {
   echo "Bitte erst <a href=\"login.html">einloggen</a>";
   exit;
   }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
...
...
wenn ich den php-Teil weglasse, wird meine Seite korekt angezeigt. Setze ich diesen php-Teil jedoch vor meinen eigentlichen html-Code (wie oben), bekomme ich im Bowser meine Seite zwar angezeigt, jedoch mit "einloggen</a>";exit;}?>" eingeleitet als Text und dann eine völlig verschobene Designstruktur. Meine Seite ist also komplett verschoben und das trotz einer css-Datei.
Wie gesagt, ohne diesen php-Teil sieht die Seite normal aus.

Weiss jemand, was hier los sein kann oder wo mein Fehler ist
Würde mich wirklich sehr über Hilfe freuen, da ich jetzt schon mehrere Stunden mit der Fehlersuche verbracht habe.

Danke im Voraus :)
Markus
 
Zuletzt bearbeitet von einem Moderator:
Hallo!

Versuche es mal so:
PHP:
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
...
...
<body>
<?php
if(!isset($_SESSION["username"]))
   {
   echo "Bitte erst <a href=\"login.html\">einloggen</a>";
   exit;
   }
?>
</body>
Die if-Abfrage also im Body an der gewünschten Stelle einsetzen (hinter login.html hat auch ein Backslash gefehlt).
Wobei Dein exit nicht wirklich Sinn macht..... es sei denn weiter unten kommt noch mehr PHP-Code.

Und beim nächsten mal den Code bitte in die ensprechenden Code-Tags setzen:
[code=php]...[/code] oder zumindest in [code=html]...[/code]
Ausserdem hätte der Beitrag ins PHP-Forum gehört.

Gruss Dr Dau
 
Hallo Dr Dau,

vielen dank für die schnelle Info. sry, dachte, es wäre hier richtig...

Leider funktioniert das auch nicht. Egal, an welcher Stelle ich meine if-Anweisung bringe , er zeigt mir immer ab "einloggen" den Quelltext im Browser an.
Übrigens habe ich einfach mal versucht, die if-Anweisung wegzulassen. Dann zeigt er mir zwar den Text ab einloggen nicht mehr an, verschiebt jedoch trotzdem das ganze Design.
Nur wenn ich alles, was mit php zu tun hat weglasse, wird mein design richtig angezeigt. Aber leider brauch ich das ja, da meine geschützten Seiten nach dem Loginvorgang wohl alle so beginnen müssen.

Also selbst die ersten Zeilen
PHP:
<?php
session_start();
?>

reichen aus, um mein Design zu verschieben :(

Woran kann es denn sonst noch liegen? Der Browser sollte es nicht sein, da ich jetzt 3 unterschiedliche ausprobiert habe.
 
Hallo Maniac_81,

dein Hinweis hat bei mir einen erfolgreichen Synergie-Effekt ausgesetzt :)

Ja, ich hatte schon öfter die html in php umbenannt. Allerdings habe ich in phase5 dann immer gebrowst und da hatte ich noch keinen php-code drin. Da hat natürlich alles wunderbar funktioniert.
Jetzt ist mir eingefallen, dass ich die html vielleicht einfach mal in php umändern sollte UND diese dann auf meinen php-fähigen Server starten, statt in phase5.

Das hat jetzt natürlich funktioniert!

Super und vielen Dank! Jetzt komme ich endlich weiter mit meinem Projekt :)

Grüßlinge
 
Zurück