Torsten: Problem mit session_start();

Hallo,

wieder mal ein Problem welches nur auf dem Server meines Providers auftaucht.

  
<?php  
  if(isset($_POST['gesendet']))  
  {  
    session_start();  
    $_SESSION["authenticated"] = 1;  
    header('Location: intern.php');  
  }  
?>  
<form ... >...</form>  

Fehlermeldung im Browser:
Warning: session_start(): Cannot send session cache limiter - headers already sent

Auf meinem lokalen Webserver taucht dieser Meldung nicht auf, error_reporting ist auf E_ALL gestellt.

Weiß jemand woran es liegen könnte?

Gruß
Torsten

  1. Hallo, dein Server möchte dir vermutlich bzw. eventuell sagen, dass du bereits HTML-Elemente zum Server gesendet, bevor du die Session gestartet hast ("headers already sent"). Das session_start scheint bei dir mitten im Body-Bereich zu stehen, da im Anschluss daran das form-tag steht? Soweit ich weiß, müssen die Sessionfunktionen vor das eigentliche HTML-Dokument.

    Viele Grüsse Carrie

    1. Hallo, dein Server möchte dir vermutlich bzw. eventuell sagen, dass du bereits HTML-Elemente zum Server gesendet, bevor du die Session gestartet hast ("headers already sent"). Das session_start scheint bei dir mitten im Body-Bereich zu stehen, da im Anschluss daran das form-tag steht?

      ja mein session_start ist im body.
      Ich wüsste auch nicht wie ich das anders machen sollte. Die session_start befindet sich in der login.php und die login.php wird mittels index.php?page=login.php inkludiert.

      Soweit ich weiß, müssen die Sessionfunktionen vor das eigentliche HTML-Dokument.

      Wenn dem so ist, wie soll ich obige Situation bewältigen?

      Auf Sessions wollte ich eigentlich nicht verzichten, aber wenn die so schlecht zu handhaben sind...

      Gruß
      Torsten

      1. Hi Torsten!

        Wenn dem so ist, wie soll ich obige Situation bewältigen?

        Was spricht denn dagegen, session_start() als Erstes aufzurufen?
        Ich weiß nicht, ob es da Nachteile gibt, aber das dürfte doch eigentlich nichts ändern, oder?

        MfG Hopsel

        --
        "It's amazing I won. I was running against peace, prosperity, and incumbency."
        George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
        Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
  2. Hi,

    wenn du keine Lust hast und ein bisschen an den Symptomen herumdoktorn willst: Schreib ein ob_start(); als allererste Zeile in deine index.php

    E7

    1. Hi,

      wenn du keine Lust hast und ein bisschen an den Symptomen herumdoktorn willst: Schreib ein ob_start(); als allererste Zeile in deine index.php

      Versteh ich nicht. Was soll denn die Funktion ob_start() machen?

      Gruß
      Torsten

      1. Hi,

        lesen hilft: http://de.php.net/manual/de/function.ob-start.php. Die Ausgabe wird gepuffert, damit hat der Server noch nichts an den Client verschickt, obwohl du per echo oder sonst wie schon Inhalt verschickt hat. Erst mittels ob_end_flush(); oder dem Ende des Skriptes erfolgt der gesamte Versand auf einmal. Header können damit quasi nachträglich angefügt werden, das Starten einer Session demnach auch.

        MfG
        Rouven

        --
        -------------------
        ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
        1. Hallo,

          lesen hilft: http://de.php.net/manual/de/function.ob-start.php. Die Ausgabe wird gepuffert, damit hat der Server noch nichts an den Client verschickt, obwohl du per echo oder sonst wie schon Inhalt verschickt hat. Erst mittels ob_end_flush(); oder dem Ende des Skriptes erfolgt der gesamte Versand auf einmal. Header können damit quasi nachträglich angefügt werden, das Starten einer Session demnach auch.

          achso, wusste nicht das ob_start eine Funktion von PHP ist, dachte er wollte mir vorschlagen eine eigen definierte Funktion zu Schreiben, das hat mich verwirrt.

          Danke hat mir sehr weiter geholfen, war schon kurz davor mein Projekt in die Tonne zu treten und von neuem beginnen...

          Gruß
          Torsten