Ankündigung

Einklappen
Keine Ankündigung bisher.

Probleme mit Cookies - headers already sent

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Probleme mit Cookies - headers already sent

    Ich habe ein seltsames Problem beim setzen von Cookies, das lokal nicht auftritt aber auf meinem php-Space schon. Und zwar erhalte ich eine Warnung ungefähr nach folgendem Wortlaut: 'cannot add header information, headers already sent by blabla'

    Mir ist bekannt, dass man Cookies setzen muss, bevor auch nur ein Tag html an den Client gesendet wird, da ansonsten der http Response schon unterwegs ist, nur habe ich gar keine html ausgabe gemacht und bekomme trotzdem diese Meldung.

    Und: lokal kommt sie nicht!

    Dies ist der Codeabschnitt:
    PHP-Code:
    $id session_start(); 
    include (
    'db_functions.php'); 
    $db db_connect(); 

    if (isset(
    $_COOKIE['acc']) && isset($_COOKIE['pass'])){ 
       
    $acc $_COOKIE['acc']; 
       
    $pass $_COOKIE['pass']; 
         
          if((
    $x db_verifyUser($acc$pass)) != 0) { 
             
             if (
    $x == 2) { $error .= "blablabla"$ok=false;}
             else { 
             
    #Login OK 
             
    db_login(db_getUserid($acc$pass)); 
             
    setcookie("acc"$acctime() + 2419200); 
             
    setcookie("pass"$passtime() + 2419200); 
             } 
          } 

    Jemand eine Idee, was da faul ist

  • #2
    Re: Probleme mit Cookies - headers already sent

    Zitat von TriloByte
    'cannot add header information, headers already sent by blabla'
    "The never ending story" oder "Keine Woche ohne diese Fehlermeldung" :wink:

    In der Fehlermeldung, die Du leider nicht komplett gepostet hast, steht sowas wie "output started.....". Das bedeutet, dass vor setcookie schon irgendetwas zum Browser geschickt wird. Entweder HTML-Code, eine Leerzeile oder auch nur ein Leerzeichen, das darf aber nicht sein.

    Gruß
    phpfan

    Kommentar


    • #3
      Re: Probleme mit Cookies - headers already sent

      Zitat von TriloByte
      headers already sent by blabla'
      das blabla .. ist recht interessant.

      normalerweise steht da ja die datei in der die ausgabe entsteht und auch die zeile.
      da du eine datei per include() einbindest kann es natürlich auch sein - und es ist auch wahrscheinlich - das in dieser datei eine ausgabe stattfindet.
      und wenn es nur eine leerstelle vor dem öffnenden <?php-tag ist.

      grüße ben.

      Kommentar


      • #4
        Danke, danke. Ich bin ja so ein Vollidiot! Da waren tatsächlich 2 Zeilenumbrüche in der, von der includeten Datei, includeten Datei!

        Was lese ich auch die Fehlermeldungen nicht richtig.
        Thx für den Anstoß!

        Das einzige was mich noch wundert ist, dass die Fehlermeldung lokal nicht kam.

        Kommentar


        • #5
          Zitat von TriloByte
          Das einzige was mich noch wundert ist, dass die Fehlermeldung lokal nicht kam.
          spricht nicht gerade für das lokale system.

          ich kenne mich da nicht gut genug aus, aber eventuell interpretiert windows die ganze sache anders als linux?


          ich weiß gar nicht, ob das error_reporting da eine rolle spielt, aber falls das doch der fall sein sollte könnte es auch an den unterschiedlichen einstellungen zwischen lokalem system und webserver liegen

          Kommentar


          • #6
            es liegt daran, dass ich lokal eine andere Datenbank, sprich eine andere 'db_init.php' verwende (wird von 'db_functions.php' includiert), als extern. Und da waren keine Zeilenumbrüche/Leerzeichen.

            Mit dem denken haperts heute bei mir sichtlich

            Kommentar


            • #7
              hi,

              hab eben das selbe problem gehabt und durch diesen post einen gedanken blitz bekommen und sehe da problem weg.

              ich der code der den cookie setzt auf zeile 1?

              Kommentar


              • #8
                Ein Cookie muss nicht in Zeile 1 eines Scriptes gesetzt werden, das kann auch Zeile 111 sein, das ist völlig wurscht. Es darf eben vorher nur nichts ausgegeben werden.

                Gruß
                phpfan

                Kommentar


                • #9
                  vielleicht, um es mal klarzustellen.

                  es darf keine HTML-ausgabe geben.
                  PHP darf selbstverständlich vorher stehen.

                  Kommentar


                  • #10
                    guck auf das was Ben geschrieben hat und ich sage dir jetzt als anfänger du must es in die erste zeile packen!

                    überleg mal logisch!

                    wenn du eine html seite hast und der code für den cookie erst auf zeile 111 kommt dann hat der browser schon 110 andere zeilen verarbeitet!

                    Kommentar


                    • #11
                      Zitat von DJ Nuno
                      guck auf das was Ben geschrieben hat und ich sage dir jetzt als anfänger du must es in die erste zeile packen!
                      NEIN
                      PHP-Code:
                      <?
                          $a = 22;
                          $b = 33;
                          $c = $a + $b;
                          mysql_connect("host", "user", "passwort");
                          mysql_selectd_db("Datenbankname");
                          $result = mysql_query ("Select name from tabelle where name='" . $_GET["name"] . "'");
                          $name = mysql_result($result,0);
                          setCookie("MeinCookie", $name, time()+3600);
                      ?>
                      Du verwechselst Ausgabe mit Verarbeiten!

                      Gruß
                      phpfan

                      Kommentar


                      • #12
                        tu mir einmal einen gefallen und versuch es doch bitte einfach.

                        Kommentar


                        • #13
                          Versuch' Du es doch, ich bin mir sicher, dass es geht.

                          Wie soll man denn sonst jemals entscheiden können, was man in einem Cookie speichern will, wenn ich den Cookie in der ersten Zeile des Scripts setzen muss?

                          Nochmal: Man kann einen Cookie setzen, wann man will, solange noch keine Ausgabe zum Browser erfolgt ist!

                          Und um Dich noch mehr zu verwirren, auch das geht:
                          PHP-Code:
                          <?
                             ob_start();
                          ?>
                          <html>
                          <body>
                          <?
                             echo "Hallo Welt";

                             setCookie("MeinCookie", "Es geht auch so", time()+3600);

                             ob_end_flush();
                          ?>
                          </body>
                          </html>
                          Gruß
                          phpfan

                          Kommentar


                          • #14
                            der ist gut.

                            meiner besser!

                            versuch den code:
                            PHP-Code:
                            <html>
                            <head>
                            <title>Test</title>
                            <body>
                            <? 
                               ob_start(); 

                               echo "Hallo Welt"; 

                               setCookie("MeinCookie", "Es geht auch so", time()+3600); 
                               
                               echo "Cookie wurde gesetzt!";

                               ob_end_flush(); 
                            ?>
                            </body>
                            höre auf mich!

                            damit das klapt darfst du kein Body haben!

                            (EDIT)
                            quatsch kein titel bzw. keine normale homepage.

                            kannst du mal die ersten 5 zeilen der HP hier posten?

                            Kommentar


                            • #15
                              Sorry, wenn ich das mal so hart sage, aber wenn man keine Ahnung hat, dann sollte man sich nicht so weit aus dem Fenster lehnen, der Sturz könnte tief ausfallen.
                              PHP-Code:
                              <? 
                                 ob_start(); 
                              ?>
                              <html> 
                              <head> 
                              <title>Test</title> 
                              </head>
                              <body> 
                              <? 
                                 echo "Hallo Welt"; 

                                 setCookie("MeinCookie", "Es geht auch so", time()+3600); 
                                  
                                 echo "Cookie wurde gesetzt!"; 

                                 ob_end_flush(); 
                              ?> 
                              </body> 
                              </html>
                              Gruß
                              phpfan

                              Kommentar

                              Lädt...
                              X