Martin L: cookies

ich arbeite mich gerade in cookies ein und naja ich bekomme immer folgenden fehler

Warning: Cannot modify header information - headers already sent by (output started at /var/httpd/martinleurs.de/counter/cookie.php:9) in /var/httpd/martinleurs.de/counter/cookie.php on line 12

dazu gehört folgender code:

<html>
<head>
<title></title>
<meta name="author" content="Dieter">

</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">

<?php
    error_reporting(E_ALL);
    // Client soll Cookie 'xyz' mit dem Wert 'foobar' setzen
    setcookie("xyz", "foobar", time()+60*60);

?>

</body>
</html>

im tutorial muss wohl ein wichtiger satz fehlen und ich werde aus dem fehler nicht schlau so lange programmiere ich noch nicht in Php :-(

ich hoffe ihr wisst hilfe

grazie in anticipo

  1. ich hoffe ihr wisst hilfe

    Ja, was glaubst du was "headers already sent" bedeutet?
    Der PHP-Teil muss vor(!) jeglichem Output kommen. Also auch vor "<html>"

    1. ach so..

      ich dachte die header dateien werden im head bereich gesendet..... :-| da hatte ich das dann auch mal reingeschrieben aber das hat halt auch nicht funktioniert.... aber dann ist das denke ich klar danke sehr (ich teste es mal)

      1. damit tritt aber in problem auf.... ich wollte eigentlich meine homepages mit 2 styles machen und im cookie den wert speichern welcher style ausgewählt wurde.... aber das wird dann wohl nicht gehen oder ? wie soll man das denn machen?...

        1. Hallo!

          damit tritt aber in problem auf.... ich wollte eigentlich meine homepages mit 2 styles machen und im cookie den wert speichern welcher style ausgewählt wurde.... aber das wird dann wohl nicht gehen oder ? wie soll man das denn machen?...

          Klar geht das, kein Problem.
          Du bietest ja wohl irgendwo ein Formular oder sowas an, wo der User ein Stylesheet auswählen kann. Dieses Formular sendest du ab, wertest das Formular aus und sendest ein Cookie an den Browser. Dann erst startest du mit dem Output.

          Auslesen kannst du Cookies jederzeit mit dem globalem Array $_COOKIE.

          mfg
            frafu

          1. Alles was jetzt kommt denke ich mir live aus und das ist noch nicht überdacht soweit bin ich noch nich also vllt ist es schwachsinn dann beschäftige ich mich erst nachher damit....

            also ich hatte eigentlich vor so ein auswahl formular oder zwei buttons oder ähnliches zu machen.... irgend wie sowas halt aber die buttons oder ein formular stehen doch im body teil und ich hatte eigentlich vor, dass der user zu jeder zeit den style ändern kann..... also er besucht meine seite und nach 3 minuten will er den style ändern.. dann wählt er style2 aus und klickt auf absenden oder so und dann soll der Cookie gesetzt werden oder der wert im cookie geändert werden (geht glaub ich nicht stand zumindest noch nirgendwo)

            wie soll ich denn den user interagieren lassen ohne vorher html zu benutzen bzw wie soll ich html nutzen ohne vorher den ersten output zu machen???

            1. Hallo!

              wie soll ich denn den user interagieren lassen ohne vorher html zu benutzen bzw wie soll ich html nutzen ohne vorher den ersten output zu machen???

              Du hast ein Formular und schickst es ab. Auf der Seite die das Formular auswertet, kannst du alles auswerten ohne auch nur ein Zeichen ausgeben zu müssen. Erst wenn das Cookie gesetzt ist, kommt der Output.

              Quasi so:

                
              <?php  
                 if(isset($_POST['stylesheet'])){  
                   // Mache alles notwendige .....  
                   setcookie(....);  
                 }  
              ?>  
              <html>  
              ........  
              </html>  
              
              

              mfg
                frafu

              1. joa so kann man es denke ich machen danke sehr

                (vor allen dingen da die Seite ja sowieso neu geladen werden muss wenn ein user sein Style ändert...)

                wird denn falls der das öfter macht in cookie gleichen namens überschrieben?

                also wenn ich den cookie "test" mit dem wert "hallo" belegt habe und setze dann noch mal den cookie "test" mit dem wert "bye" hat er dann den wert bye oder gibt es zwei cookies (was ich aber nicht glaube)...

                1. Hallo!

                  also wenn ich den cookie "test" mit dem wert "hallo" belegt habe und setze dann noch mal den cookie "test" mit dem wert "bye" hat er dann den wert bye oder gibt es zwei cookies (was ich aber nicht glaube)...

                  Wert wird überschrieben.

                  mfg
                    frafu

                  1. Wunderbar dann werde ich es wohl mal probieren... danke sehr

  2. Hallo,

    ich arbeite mich gerade in cookies ein und naja ich bekomme immer folgenden fehler
    Warning: Cannot modify header information - headers already sent ...

    ja, das ist ein häufiger Fehler.
    Cookies werden durch bestimmte HTTP-Header gesetzt, und diese Header müssen logischerweise als erstes gesendet werden, bevor Nutzdaten an den Client gesendet werden.

    dazu gehört folgender code:

    ... der ja sofort in der ersten Zeile mit der Ausgabe von Nutzdaten (nämlich dem einleitenden html-Tag) beginnt.

    <?php
        error_reporting(E_ALL);
        // Client soll Cookie 'xyz' mit dem Wert 'foobar' setzen
        setcookie("xyz", "foobar", time()+60*60);

    Und wenn PHP endlich an die Reihe kommt, um den Cookie-Header zu setzen, ist der Zug schon abgefahren. Kehre die Reihenfolge um, so dass die PHP-Anweisungen als erstes kommen, bevor Content ausgegeben wird.

    im tutorial muss wohl ein wichtiger satz fehlen ...

    Kann ich mir nicht vorstellen, das steht eigentlich so ziemlich überall, wo die PHP-Funktionen header() oder setcookie() erläutert werden.

    Gute Nacht,
     Martin

    --
    Frauen sind wie Elektrizität: Fasst man sie an, kriegt man eine gewischt.