kostenloser Webspace werbefrei: lima-city


Geschützter Bereich klappt nicht

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    philip-felder

    philip-felder hat kostenlosen Webspace.

    Hallo

    Weiß einer wo der fehler liegt hier der code:


    <?php
    session_start();
    ?>
    
    <?php
    if(!isset($_SESSION["username"]))
       {
       header('Location: index.php?page=nichteingeloggt');
       exit;
       }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Unbenanntes Dokument</title>
    <link rel="stylesheet" type="text/css" href="../CSS/1.css" />
    
    </head>
    <body>
    <div id="privat">
    <i>
    <h2>Privat...</h2>
    </i>
    
    </div>
    </body>
    </html>


    Es kommt immer Warning: "Cannot modify header information - headers already sent..."

    Vielen Dank

    Philip
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Jegliche Ausgaben, selbst ein Leerzeichen, sind vor session_start oder der Weiterleitung zu vermeiden.
    Versuchs mal, indem du meinen Code kopierst und einfügst.

    <?php
    session_start();
    if(!isset($_SESSION["username"]))
       {
       header('Location: index.php?page=nichteingeloggt');
       exit;
       }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Unbenanntes Dokument</title>
    <link rel="stylesheet" type="text/css" href="../CSS/1.css" />
    
    </head>
    <body>
    <div id="privat">
    <i>
    <h2>Privat...</h2>
    </i>
    
    </div>
    </body>
    </html>
  4. Autor dieses Themas

    philip-felder

    philip-felder hat kostenlosen Webspace.

    Leider klappt es auch nicht

    Keiner mehr eine idee?

    Beitrag zuletzt geändert: 17.2.2010 12:26:53 von philip-felder
  5. also: dieser fehler tritt immer dann auf, wenn man etwas vor der session_start(); hat. Hast du davor irgendwas geschrieben?
    (und das exit kannst du denke ich weglassen!
  6. Autor dieses Themas

    philip-felder

    philip-felder hat kostenlosen Webspace.

    Nein das ist der reine code

    <?php
    session_start();
    if(!isset($_SESSION["username"]))
       {
       header('Location: index.php?page=nichteingeloggt');
       exit;
       }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Unbenanntes Dokument</title>
    <link rel="stylesheet" type="text/css" href="../CSS/1.css" />
    
    </head>
    <body>
    <div id="privat">
    <i>
    <h2>Privat...</h2>
    </i>
    
    </div>
    </body>
    </html>

  7. Also wenn ich deinen Code nehme und auf meinen Webspace lege als PHP-Datei, dann funktioniert das wunderbar. Kann es sein, dass dieser Code in irgendetwas eingebettet wird, per Include oder in ein Frame?

    Hier wirst du auf meine Index weitergeleitet, folglich funktioniert der Code:

    http://karpfen.lima-city.de/abc.php
  8. Autor dieses Themas

    philip-felder

    philip-felder hat kostenlosen Webspace.

    J also wenn man nicht eingeloggt ist so man auf die Seite nichteingeloggt kommen die ist als if in der index (also
    elseif($page == "nichteingeloggt") {
    	include "Einloggen.php";
    }


    Einloggen.php :

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Unbenanntes Dokument</title>
    </head>
    <link type="text/css" rel="stylesheet" href="CSS/2.css" />
    <body>
    <div id="einloggen">
    <h1>Nicht Eingeloggt!</h1>
    	<p>Um diesen Inhalt sehen zu können, müssen sie eingeloggt sein!</p>
        <p>Bitte Loggen sie sich ein!</p>
    
    </div>
    </body>
    </html>
  9. Kann es sein das du die Bedingung erfüllst?

    Probier einfach mal:
    <?php
    header('Location: index.php?page=nichteingeloggt');
    ?>
  10. Autor dieses Themas

    philip-felder

    philip-felder hat kostenlosen Webspace.

    Das klappt auch nicht :


    Warning: Cannot modify header information - headers already sent by (output started at /home/webpages/lima-city/philip-felder/html/index.php:10) in /home/webpages/lima-city/philip-felder/html/Seiten/Privat.php on line 2


    Beitrag zuletzt geändert: 17.2.2010 13:08:02 von philip-felder
  11. Ich denke mal, der Fehler liegt darin, dass du je nach Navigationspunkt irgendwas in der index.php änderst. So sieht das nämlich auf deinem Webspace aus. Nun scheint aber die index.php irgendwas vorher auszugeben.

    Vielleicht kannst du mal den Code der index.php hier posten und die Stelle markieren, wo per Variablenübergabe entschieden wird, dass der Privatbereich aufgerufen werden soll.
  12. Autor dieses Themas

    philip-felder

    philip-felder hat kostenlosen Webspace.

    <?php
    session_start();
    ?>
    <html>
    <head>
    <title>Philips Homepage</title>
    <link rel="stylesheet" type="text/css" href="css.css">
    </head>
    <body background="Hintergrund.jpg">
    <?php
    $page == $_GET['page'];
    ?>
    <div id="logo" style="position:absolute;Left:px;Top:px">
    <img src="logo.gif" width="60%">
    </div>
    <div id="Menü" style="position:absolute;Left:px;Top:200px">
    <?php
    include "Menue.html";
    ?>
    </div>
    <div style="border:solid 0px #00F; position:absolute;Top:420px">
    <?php
    include "check.php";
    include "login.html";
    ?>
    <div style="margin:30px">
    <font color="#FFFFFF">
    Oder hier <a href="index.php?page=Anmeldung">Anmelden!</a>
    </font>
    </div>
    </div>
    <div id="content" style="position:absolute;Left:300px;Top:180px">
    <?php
    if(!isset($page)){
    	$page = "Home";
    }
    if($page == "Mira") {
    	include "Seiten/Mira.php";
    } elseif($page == "Amos") {
    	include "Seiten/Amos.php";
    } elseif($page == "Sina") {
    	include "Seiten/Sina.php";
    } elseif($page == "Home") {
    	include "Seiten/Home.php";
    } elseif($page == "Kontakt") {
    	include "Seiten/Kontakt.php";
    } elseif($page == "Login") {
    	echo "<font color='#FFFFFF' size='+2'><br>
    <br>
    Erfolgreich Eingeloggt!
    </font>
    ";
    } elseif($page == "Pass") {
    	echo "<font color='#FFFFFF' size='+2'><br>
    <br>
    Falsche Benutzerdaten!
    </font>";
    } elseif($page == "Ausgeloggt") {
    	echo "<font color='#FFFFFF' size='+2'><br>
    <br>
    Ausgeloggt!
    </font>";
    }  elseif($page == "Anmeldung") {
    	include "eintragen.html";
    }  elseif($page == "Privat") {
    	include "Seiten/Privat.php";
    } elseif($page == "nichteingeloggt") {
    	include "Einloggen.php";
    }
    ?>
    </div>
    </body>
    </html>
  13. Und genau da liegt das Problem. Alle Ausgaben beginnen von <html> in Zeile 4 bis hin zu folgendem Codeteil, welcher entscheidet, welcher Inhalt dargestellt wird:

    }  elseif($page == "Anmeldung") {
    	include "eintragen.html";
    }  elseif($page == "Privat") {
    	include "Seiten/Privat.php";
    } elseif($page == "nichteingeloggt") {
    	include "Einloggen.php";
    }


    stellt eine Ausgabe vor der Weiterleitung dar und ist nicht zulässig. Die Weiterleitung muss vor diesen Ausgaben stehen. Also faktisch in der index.php direkt nach session_start();

    Im Übrigen brauchst du in der Einloggen.php und Co die Session nicht mehr starten, das übernimmt ja deine index.php schon!

    Beitrag zuletzt geändert: 17.2.2010 13:18:52 von karpfen
  14. Autor dieses Themas

    philip-felder

    philip-felder hat kostenlosen Webspace.

    Das klappt aber:

    http://www.philip-felder.lima-city.de/index.php?page=nichteingeloggt

    Hier noch mal die index.php:

    <?php
    session_start();
    if(!isset($page)){
    	$page = "Home";
    }
    if($page == "Mira") {
    	include "Seiten/Mira.php";
    } elseif($page == "Amos") {
    	include "Seiten/Amos.php";
    } elseif($page == "Sina") {
    	include "Seiten/Sina.php";
    } elseif($page == "Home") {
    	include "Seiten/Home.php";
    } elseif($page == "Kontakt") {
    	include "Seiten/Kontakt.php";
    } elseif($page == "Login") {
    	echo "<font color='#FFFFFF' size='+2'><br>
    <br>
    Erfolgreich Eingeloggt!
    </font>
    ";
    } elseif($page == "Pass") {
    	echo "<font color='#FFFFFF' size='+2'><br>
    <br>
    Falsche Benutzerdaten!
    </font>";
    } elseif($page == "Ausgeloggt") {
    	echo "<font color='#FFFFFF' size='+2'><br>
    <br>
    Ausgeloggt!
    </font>";
    }  elseif($page == "Anmeldung") {
    	include "eintragen.html";
    }  elseif($page == "Privat") {
    	include "Seiten/Privat.php";
    } elseif($page == "nichteingeloggt") {
    	include "Einloggen.php";
    }
    
    
    
    ?>
    <html>
    <head>
    <title>Philips Homepage</title>.........


    Beitrag zuletzt geändert: 17.2.2010 13:23:34 von philip-felder
  15. In der Einloggen.php verwendest du ja auch keine Weiterleitung. Deshalb geht das dort auch!
  16. Autor dieses Themas

    philip-felder

    philip-felder hat kostenlosen Webspace.

    Verstehe ich jetzt i-wie nicht
  17. Es gibt bei deinem Code 2 Zeilen, die immer vor jeglicher Ausgabe stehen müssen, selbst Leerzeichen wären eine Ausgabe.

    Zeile 1:

    session_start();


    Zeile 2:

    header('Location: index.php?page=nichteingeloggt');


    Steht vor diesen beiden Zeilen schon irgendeine Ausgabe, sei es ein Leerzeichen, html-Code, etc... dann kommt die bei dir vorkommende Fehlermeldung.

    Du hast eine index.php, in der du je nach Seite per Variable eine andere PHP-Datei includierst (also anzeigen lässt). Vor der Entscheidung, welcher Inhalt angezeigt wird, liegt aber schon diverser html-Code, was den von mir oben genannten Regeln widerspricht. Die Einloggen-Datei enthält keine dieser oben genannten Code-Zeilen, deshalb funktioniert sie. Die Privat-Datei enthält diese Code-Zeilen aber, deshalb funktioniert sie nicht.

    Du musst also die Überprüfung, welche Datei (bzw. welcher Inhalt) includiert wird gleich ganz am Anfang machen. Dann sollte es funktionieren.
  18. Autor dieses Themas

    philip-felder

    philip-felder hat kostenlosen Webspace.

    Danke, hat geklappt :wink:

    LG Philip
    :wave:
  19. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!