JulianBaumueller: session_start() in include-datei funktioniert nicht

Hallo,

Ich habe folgendes Problem:

Ich will ein Art Register-Script selbst bauen.
Dazu ist mir folgendes in den Sinn gekommen:

Ich werde alle Daten des Benutzers so speichern:

  
<form method="post" action="">  
<input type="text" name="firstname">  
<input type="text" name="lastname">  
<input type="text" name="mail">  
</form>  

und weiter...

  
<?php  
session_start();  
  
$firstname = $_POST['firstname'];  
$lastname = $_POST['lastname'];  
$mail = $_POST['mail'];  
  
  
// Vorname  
if(!isset($_SESSION[vorname]))  
{  
$_SESSION['vorname'] = $firstname;  
}  
  
  
// Nachname  
if(!isset($_SESSION['nachname']))  
{  
$_SESSION['nachname'] = $lastname;  
}  
  
  
// Mail  
if(!isset($_SESSION['email']))  
{  
$_SESSION['email'] = $mail;  
}  
  
?>  

Aber, eines funktioniert nicht:

Ich habe die Dateien, in die ich den code geschreiben habe, in meine Index.php included:

  
<?php  
$url = $_GET[page];  
  
  
switch($url)  
{  
  
  
case register:  
include("register.php");  
break;  
  
}  
  
?>  

Wenn ich jetzt das Script benutzen und aufrufen möchte, erscheint folgende Fehlermeldung:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started... blablabla

Kann mir jemand helfen und sagen wie ich dass beheben kann?
Ich glaube, es funktioniert deswegen nicht, weil ich die seite (register.php) included habe.

Kann mir irgendjemand helfen?
Wenn ich mich komisch und unverständlich ausgedrückt habe, sagt mirs einfach.

Gruß Julian.

  1. Hi,

    Wenn ich jetzt das Script benutzen und aufrufen möchte, erscheint folgende Fehlermeldung:

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started... blablabla

    Kann mir jemand helfen und sagen wie ich dass beheben kann?

    Ja, Google beispielsweise - dieser Fehler ist bestens dokumentiert.

    Und das Handbuch sagt auch, was bzgl. session_start zu beachten ist.

    Ich glaube, es funktioniert deswegen nicht, weil ich die seite (register.php) included habe.

    Nein, weil du vorher schon Ausgaben gemacht hast.

    MfG ChrisB

    --
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
    1. Hallo,

      ich möcht euch noch mal für die schnellen Antworten danken.

      Ich habe folgenden Fehler gemacht und zwar habe ich das session_start(); UNTER das [<?php] geschreiben.

      Woanders hab ich dann gelesen, dass es eigentlich so heißen müsste:

      <?session_start();?>

      so hab ich das jetzt auch im quelltext stehen.

      Funktioniert.

      Gruß
      Julian.

      1. Moin!

        Hallo,

        ich möcht euch noch mal für die schnellen Antworten danken.

        Ich habe folgenden Fehler gemacht und zwar habe ich das session_start(); UNTER das [<?php] geschreiben.

        Nein. Du hast VOR diesem "<?php" was stehen, was als Ausgabe 1:1 an den Browser geschickt wird.

        Woanders hab ich dann gelesen, dass es eigentlich so heißen müsste:

        <?session_start();?>

        Nein, MUSS nicht so heißen. Mit der Kurzform der PHP-Tags handelst du dir ggf. Ärger ein.

        <?php
        session_start();
        ?>

        wäre auch erlaubt. Nur eben mit dem "<?php" als allerersten Zeichen in der Datei!

        - Sven Rautenberg

  2. Hi!

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started... blablabla

    Das ist ein bekanntes Ding: Deine Scripte verursachen eine Ausgabe _bevor_ session_start() aufgerufen wird - die HTTP-Header sind bereits "gesendet", wie es auch in der Meldung steht.

    off:PP

    --
    "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)