Sessions&Cookies ( headers already sent ... )

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Sessions&Cookies ( headers already sent ... )

    hi,

    also bitte nicht schimpfen, ich habe wirklich lange gesucht mit der suchmaschine, aber irgendwie konnten mir die vorherigen threads zu diesem thema nicht weiterhelfen! also ich beschreibe kurz mein problem:

    index.php ( hier werden alle weiteren seiten included!)

    - Formular mit : Name, Passwort und einer Checkbox Autologin

    das sind die ersten paar Zeilen:

    PHP-Code:
    <?
    session_start();
    require("config.inc.php");
    ?>
    <html>
    <head>
    <title>blah</title>
    </head>
    <link rel="stylesheet" type="text/css" href="design.css">
    <?
    switch($site) {
    case login:
    include('login.php');
    break;
    default:
    include('home.php');
    }
    ?>
    <form action="index.php?site=login" method="post">
    <div align="left"> 
    <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Name:<br>
    </font> 
    <input type="text" name="nickname" size="20">
    <br>
    <font face="Verdana, Arial, Helvetica, sans-serif" size="2">Passwort:</font><br>
    <input type="password" name="password" size="20">
    <br>
    <font size="1"> <font face="Verdana, Arial, Helvetica, sans-serif"> 
    <input type="checkbox" name="cookies" value="on">
    Auto Login<br>
    </font></font> 
    <input type="submit" name="submit" value="login">
    <br>
    <br>
    </p>
    </div>
    </form>
    </html>
    login.php ( prüft login, falls alles korrekt ist, sollen sessions gesetzt werden, wenn die checkbox aktiviert ist auch cookies! )

    Hier die datei:

    PHP-Code:
    <? 
    $query = @mysql_query("SELECT nickname, password FROM $blub WHERE nickname = '".$_POST['nickname']."'") or die('Konnte die Datenbank nicht auswählen!');
    $result = @mysql_fetch_array($query);

    if(!$_POST['nickname'] || $_POST['nickname'] == "") 
    {
    echo 'Bitte geben Sie einen Benutzernamen an!';
    }

    // Hier stehen noch weitere if abfragen ...

    else
    {
    if($cookies == "on") 
    {
    setcookie("cookienickname",$cookienickname,time() + 86400 * 30); 
    setcookie("cookiepassword",$cookiepassword,time() + 86400 * 30); 
    }
    $nickname = $result['nickname'];
    session_register('nickname');
    echo 'Login erfolgreich!<meta http-equiv="REFRESH" content="3; url=blah.php">';
    }
    ?>
    Ich bekomme nun die Fehlermeldungen:

    Warning: Cannot modify header information - headers already sent by (output started at /.../index.php:15) in /.../login.php on line 58

    Warning: Cannot modify header information - headers already sent by (output started at /.../index.php:15) in /.../login.php on line 59


    P.S. Es sind keine Leerzeichen vor den <? ?> ! Ich habe nun in den anderen Threads gelesen, es dürfen keine Ausgaben stattfinden, aber wie soll ich das unterbinden darf ich die seite vielleicht nicht includen? habe glaube echt nen brett vorm kopf! wenn mir jemand weiterhelfen würde, wäre ich sehr dankbar!

    mfg ron
    Zuletzt geändert von Rondos; 02.07.2003, 21:13.

  • #2
    hi

    im moment verstehe ich den Zusammenhang zwischen den 2 Dateien nicht.

    In index.php wird die login.php includet? oder ist login.php das Ziel eines Formulars?

    evntl würde mehr code der index.php helfen

    cya CrazyPip

    Kommentar


    • #3
      hab oben mal die wichtigsten elemente reineditiert!

      Kommentar


      • #4
        wird die index.php irgendwo includiert?
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          nein, index.php ist die standard seite, dort werden alle seiten included!

          Kommentar


          • #6
            poste mal aus der login.php die zeilen von 50 - 70

            mich interessieren insbesondere die zeilen 58 und 59.
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Re: Sessions&amp;Cookies ( headers already sent ... )

              Original geschrieben von Rondos
              PHP-Code:
              setcookie("cookienickname",$cookienickname,time() + 86400 30); 
              setcookie("cookiepassword",$cookiepassword,time() + 86400 30); 
              Da ist der Fehler. Cookies werden über Header gesetzt. Und wie du schon richtig erkannt hast, dürfen vorher keine Ausgaben erfolgen. Deine login.php wird aber included, nachdem schon ausgaben gemacht wurden (durch die index.php).
              hopka.net!

              Kommentar


              • #8
                hier steht doch alles:



                Warning: Cannot modify header information - headers already sent by (output started at /.../index.php:15) in /.../login.php on line 58

                header können nicht gesendet werden weil der output in index.php in zeile 15 gestartet wurde und in login.php zeile 58 wurde versucht ein header zu senden
                Beantworte nie Threads mit mehr als 15 followups...
                Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                Kommentar


                • #9
                  OffTopic:
                  man bin ich blind...
                  er hat doch nur den code gekürzt... und ich dachte... auf den ersten blick sind das keine 60 zeilen...



                  @Rondos
                  schreibe alle ausgabe vorher in eine variable rein.

                  am schluss des scriptes kannst du dann die ausgabe machen.

                  also nach dem cookie-kram usw.
                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar


                  • #10
                    Original geschrieben von MelloPie
                    hier steht doch alles:
                    schon klar. soweit waren wir doch alle schon....
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar


                    • #11
                      ja wo sucht Ihr dann nach den fehlern???
                      Beantworte nie Threads mit mehr als 15 followups...
                      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                      Kommentar


                      • #12
                        ich musste erstmal raffen, was er wollte...

                        lösung steht schon oben irgendwo. hoffentlich akzeptiert er den vorschlag. (ausgabe zwischenspeichern)
                        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                        Kommentar


                        • #13
                          also ich habs nun erstmal so gelöst, dass ich die seite nicht include, dann klappt das, aber ich verstehe dein lösungsvorschlag irgendwie nicht ganz, ich soll alle ausgaben der index.php in eine variable speichern und am ende ausgeben?

                          Kommentar


                          • #14
                            zumindest die ausgaben, die vor dem setzen der cookies sind.

                            PHP-Code:
                            <?php

                              $temp 
                            =  '<html>';
                              
                            $temp.= '<body>'// den punkt ab hier nicht mehr vergessen.
                              
                            $temp.= '<title>.....';
                              
                            // usw.

                              // hier dann z.b. cookie setzen (oder include)

                              // ausgabe dann hier
                              
                            echo $temp;

                              
                            // fertig. ;-)

                            ?>
                            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                            Kommentar

                            Lädt...
                            X