Pierre: Problem mit session_start()

Hallo liebe PHP'ler

kann mir jemand sagen, woher die folgenden PHP-Error herführen? Bin ziemlicher Newbie und weiss nicht, was hier nicht stimmt.

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/httpd/vhosts/little-thomas.com/httpdocs/gallery/var.inc.php:105) in /home/httpd/vhosts/little-thomas.com/httpdocs/gallery/adm_gallery.php on line 8

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/httpd/vhosts/little-thomas.com/httpdocs/gallery/var.inc.php:105) in /home/httpd/vhosts/little-thomas.com/httpdocs/gallery/adm_gallery.php on line 8

Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/little-thomas.com/httpdocs/gallery/var.inc.php:105) in /home/httpd/vhosts/little-thomas.com/httpdocs/gallery/adm_gallery.php on line 10

Die Zeile 1-12 in "adm_gallery.php sehen wie folgt aus:
<?

// *** LOADING CONFIG FILE
include "var.inc.php";

// *** LOGIN FIRST
   session_start();
   if (empty($login)){
      header("Location:login.php");
      exit;
   }

Hab das Script bei "hotscripts.com" gefunden, den Entwickler erreich ich aber nicht. Die E-Mails kommen alle wieder zurück. Nun hoffe ich, dass mir hier jemand weiterhelfen kann.

Besten Dank
Pierre

  1. Moin Pierre,

    Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/httpd/vhosts/little-thomas.com/httpdocs/gallery/var.inc.php:105) »»
    Die Zeile 1-12 in "adm_gallery.php sehen wie folgt aus:
    <?

    // *** LOADING CONFIG FILE
    include "var.inc.php";

    // *** LOGIN FIRST
       session_start();
       if (empty($login)){
          header("Location:login.php");
          exit;
       }

    eigentlich sagt es ja bereits die Fehlermeldung. session_start muß als aller Erstes kommen.

    Alos so:

    <?
    session_start();

    include "var.inc.php";

    ......

    regds
    Mike©

    --
    Freunde kommen und gehen. Feinde sammeln sich an.
    1. eigentlich sagt es ja bereits die Fehlermeldung. session_start muß als aller Erstes kommen.

      schmarn, es darf vorher bloss nichts an den browser gesendet wordet sein..

      kein leerzeichen etc..
      s.h:
      http://de3.php.net/manual/de/function.session-start.php

      gruss asd

      1. Moin asd,

        schmarn, es darf vorher bloss nichts an den browser gesendet wordet sein..

        kein leerzeichen etc..
        s.h:
        http://de3.php.net/manual/de/function.session-start.php

        schlecht gelaunt, oder warum gleich so ruppig?

        Die betreffende Passge lautet:

        "Anmerkung: Bei Verwendung Cookie-basierter Sessions müssen Sie session_start() aufrufen, bevor irgend etwas an den Browser geschickt wird."

        Ist dann hiermit präzisiert.

        regds
        Mike©

        --
        Freunde kommen und gehen. Feinde sammeln sich an.
        1. moin *g*
          sorry, so war das nicht gemeint..  ;)

          schlecht gelaunt, oder warum gleich so ruppig?

          Die betreffende Passge lautet:

          "Anmerkung: Bei Verwendung Cookie-basierter Sessions müssen Sie session_start() aufrufen, bevor irgend etwas an den Browser geschickt wird."

          was hier doch genau der fall sein wird oder nicht..
          was ich ja auch sagte.
          das hat nix mit dem include zu tun, wenn man nach den namen gehen sollte, falls da wirklich nur variabeln geladen werden sollten.
          und keine ausgabe an den browser geschieht

          natürlich kann ich mich irren..  *g*

          1. Moin asd,

            sorry, so war das nicht gemeint..  ;)

            dto.

            was hier doch genau der fall sein wird oder nicht..

            lass und darauf einigen; session_start() als erster Command, dann ist man auf der sicheren Seite .-)

            regds
            Mike©

            --
            Freunde kommen und gehen. Feinde sammeln sich an.
            1. lass und darauf einigen; session_start() als erster Command, dann ist man auf der sicheren Seite .-)

              jap ok *g* :)

              1. hupps, war mal schnell in der Küche und hier läuft gleich alles über.

                Danke, danke, danke.

                Klick mich mal durch den Code und versuche eurer schnellen Hilfe zu folgen.

                Pierre

                1. hi,

                  hupps, war mal schnell in der Küche und hier läuft gleich alles über.

                  na besser als genau anders herum ;-)

                  gruß,
                  wahsaga

                  --
                  "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
                  1. Juhee! Habs hingekriegt.

                    Mein Post um halb neun hat wohl niemand mehr gesehen. Eurer Input war sehr hilfreich. Das Problem war, dass in der include-Datei nach dem schliessenden ?> noch ein Leerschlag oder ne Zeilenschaltung war und das wohl an den Server geschickt wurde, die Position der include-Datei spielt somit keine Rolle, da hier ja wirklich nur Variablen gesetzt werden.
                    Vielleicht hat das ganze mal wieder mit dem Mac zu tun, dass hier beim Öffnen oder Überspielen der Datei irgendwelche Zeichen nicht sauber konvertiert werden und dadurch dann plötzlich am Ende ein Leerzeichen steht, oder was auch immer...

                    Pierre

                    1. Moin Pierre,

                      »» Juhee! Habs hingekriegt.

                      Eurer Input war sehr hilfreich.

                      das macht Mut ;-)

                      regds
                      Mike©

                      --
                      Freunde kommen und gehen. Feinde sammeln sich an.
      2. Hello,

        schmarn, es darf vorher bloss nichts an den browser gesendet wordet sein..

        kein leerzeichen etc..

        Jau.
        Und um das schmuddlig großtechnisch zu verhindern, setzt Du gleich am Anfang Deines Scriptes
        ob_start();

        http://de3.php.net/manual/en/function.ob-start.php

        Und wenn Du  meinst, jetzt sit die Seite fertig, dann schreibst du

        ob_end_flush();

        Und gut ist es.

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
    2. Hallo nochmal

      Alos so:

      <?
      session_start();

      include "var.inc.php";

      Also auf der ersten Seite klappts nun. Das gleiche Problem hab ich aber auf der Datei login.php und wenn ich da den "include" ans Ende zieh, läufts nimmer. Also scheint die Include-Datei gebraucht zu werden, ich seh darin aber net wirklich was, was hier an den Browser zurückgegeben wird. Oder irre ich mich da?

      Das steht in der login.php
      ---------------------
      <?
      include "var.inc.php";

      if ( (!empty($fuser)) and (!empty($fpswd)) and ($fuser==$adm_user) and ($fpswd==$adm_pswd) ){

      $login=$adm_user."|".$adm_pswd;
            session_register(login);
            header("location:adm_gallery.php");
         }

      if ( (empty($login)) or ($login<>$adm_user."|".$adm_pswd) ){
         echo "<style><!--\n";
         echo "BODY {font-family:tahoma; font-size:12px}\n";
         echo "TD {font-family:tahoma; font-size:12px}\n";
         echo "INPUT {font-family:tahoma; font-size:12px}\n";
         echo "--></style>\n";
         echo "<title>r-GALLERY</title>\n";
         echo "<p align=center><font style="font-size:20px">r-GALLERY ADMIN LOGIN</font></p>";
         echo "<form action='$PHP_SELF' method='post'>";
         echo "<p align=center>";
         echo "Username:<br><input name=fuser>";
         echo "<br>Password:<br><input type=password name=fpswd>";
         echo "<br><input type=submit value=LOGIN>";
         echo "<br>Username : $adm_user<br>Password : $adm_pswd";
         echo "</p>";
         echo "</form>";
         }

      ?>
      --------------------------

      Und so schaut die "var.inc.php" aus:
      --------------------------
      <?

      $fold="galimg/";
      $data=$fold."data.txt"; // file data
      $maxchar=750; // maximum characters for description
      $allow_post="y"; // Allow posting from Gallery Page

      $adm_user="demo"; // ADMIN USER
      $adm_pswd="1234"; // ADMIN PASSWORD

      function conv_asc2html($str,$mode){
         if ($mode==1){
            $str=str_replace("&gt;",">",$str);
            $str=str_replace("&lt;","<",$str);
            $str=str_replace("&quot;",'"',$str);
         }
         if ($mode==2){
            $str=str_replace(">","&gt;",$str);
            $str=str_replace("<","&lt;",$str);
            $str=str_replace('"',"&quot;",$str);
         }
         $str=ltrim($str);
         $str=rtrim($str);
         return $str;
      }

      function splitwordx(&$text,$w_max,$w_cut){
         if (!strstr($text," ")){ $text=$text." "; }
         $word = explode(" ", $text);
         if (empty($w_max)){ $w_max=10; }
         if (empty($w_cut)){ $w_cut=10; }
         for ($w=0; $w<count($word); $w++){
            $wordlen=strlen($word[$w]);
            if ($wordlen>$w_max){
               $wordnew="";
               $wordpart="";
               for ($l=0; $l<ceil($wordlen/$w_cut); $l++){
                  $wordpart[$l]=substr($word[$w],($l*$w_cut),$w_cut)." ";
               }
               $wordnew=implode(" ",$wordpart);
               $word[$w]=$wordnew;
            }
         }
         $text = implode(" ", $word);
         return $text;
      }

      function disperr($str){
         echo "<table border=1 cellspacing=0 cellpadding=10 style="border-collapse:collapse" bordercolor=#FFCCCC bgcolor=#FFEEEE><tr><td><font color=#FF0000 style="font-size:14px"><b>Page Error :<br>$str</td></tr></table>\n";
      }

      ?>
      --------------------------

      Könnt ihr nochmal sagen, was ich da net checke?