Andreas: Cookies

Hallo,
wie kann ich ein Cookie absetzten?
Probiere es mit folgendem Code ohne Erfolg:
$cookie = '123456789';
$Cookie_Length = 180;
$ctime = time() + (60 * $Cookie_Length);
$cookiename = "CommunityAward";
setCookie($cookiename, $cookie, $ctime, "www.access-o-mania.de");

Nach dem Absetzen finde ich im Cookie-Verzeichnis das abgesetzte Cookie nicht. Was mache ich falsch?

Andreas

  1. hi,

    Nach dem Absetzen finde ich im Cookie-Verzeichnis das abgesetzte Cookie nicht. Was mache ich falsch?

    was sagt denn dein browser dazu, wenn du ihn so einstellst, dass er beim empfangen eines cookies bei dir nachfragt, was er damit machen soll?

    gruß,
    wahsaga

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

      ...wenn du ihn so einstellst, dass er beim empfangen eines cookies bei dir nachfragt, was er damit machen soll?

      Äh - was meinst du damit?
      Wo kann ich was einstellen?

      Andreas

      1. hi,

        ...wenn du ihn so einstellst, dass er beim empfangen eines cookies bei dir nachfragt, was er damit machen soll?
        Äh - was meinst du damit?
        Wo kann ich was einstellen?

        in jedem guten browser kannst du einstellen, dass beim beim empfang eines cookies gefragt werden möchtest, was damit gemacht werden soll.

        schau in die doku deines browsers.

        gruß,
        wahsaga

        --
        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
        1. Hi,
          habe im IE 6.x Nachfrage bei Cookies eingestellt.
          Trotztdempassiert nichts wenn ich das Cookie absetze.
          Ich hab irgenwo mal gelesen, dass Cockies nicht mitten im Body abgesetzt werden können. Stimmt das?

          Andreas

          1. abend,

            wie dir der Geistige Hohlraum bereits sagte:http://de.php.net/manual/de/function.setcookie.php
            musst doch nur lesen!
            auszug:
            [..] setcookie() definiert ein mit den HTTP Header-Informationen zu übertragendes Cookie.[..]
            ---------------------------------------^^^^

            mfg,
            (tanz das)
            Z.N.S.

            --
            <img src="http://www.comunicout.com/zebulon/en.gif" border="0" alt="">
            .:LIFE ON OTHER PLANETS IS DIFFICULT:.
            1. Hallo,

              [..] setcookie() definiert ein mit den HTTP Header-Informationen zu übertragendes Cookie.[..]

              Nun lässt mich nicht doof sterben, wieso geht es nicht, was fehlt, was ist falsch?
              Das muss doch für euch eine simple Frage sein.

              Andreas

              1. Nun lässt mich nicht doof sterben, wieso geht es nicht, was fehlt, was ist falsch?

                Die Header müssen logischerweise als erstes gesendet werden. Wenn Du schon irgendwas anderes an den Browser geschickt hast, dann kannst Du keine Header mehr senden.
                Der Aufruf zum Senden des Cookies muß also als erstes auf deiner Seite erfolgen. Wenn da nur ein Leerzeichen vor deinem PHP-Bereich ist, dann funktioniert es nicht mehr.

                Gruß, rob

                1. Der Aufruf zum Senden des Cookies muß also als erstes auf deiner Seite erfolgen. Wenn da nur ein Leerzeichen vor deinem PHP-Bereich ist, dann funktioniert es nicht mehr.

                  Das ist erstens nicht grundsätzlich so, sondern Einstellungssache (Caching) und zweitens meiner Meinung nach nicht sein Problem, denn dann hätte er sich wahrscheinlich über eine Meldung "Cannot send..." beschwert.

                  1. hi,

                    Das ist erstens nicht grundsätzlich so, sondern Einstellungssache (Caching)

                    caching?

                    output buffering wäre m.E. der korrekte begriff.

                    gruß,
                    wahsaga

                    --
                    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
      2. Äh - was meinst du damit?
        Wo kann ich was einstellen?

        Du scheinst mir, ein Nutzer des Internet Explorers auf Windows zu sein :)
        Ja, auch dort kann man das einstellen. Du kannst irgendwo in den Einstellungen die "automatische Cookiebehandlung" deaktivieren und angeben, daß Du vor der Annahme von Cookies gefragt werden willst.

        Gruß, rob

  2. setCookie($cookiename, $cookie, $ctime, "www.access-o-mania.de");

    Nach dem Absetzen finde ich im Cookie-Verzeichnis das abgesetzte Cookie nicht. Was mache ich falsch?

    Du hast die Anleitung nicht genau genug gelesen. Vergleiche Deinen Aufruf mit der erwarteten Parameterliste, so wie sie in http://de.php.net/manual/de/function.setcookie.php angegeben ist.

    Beachte darüber hinaus, dass einige Parameter optional sind und als Vorgabe Daten der aktuellen URL benutzen.

  3. Hast Du sichergestellt, dass du den Cookie VOR einem etwaigen HTML-Teil in Deiner PHP-Datei angegeben hast?

    Falls nicht, koennte es daran liegen:

    (wenn ich jetzt was erzaehle, was du schon weisst, einfach überlesen):

    <mit-halbwissen-prahl>
    Dein Webserver baut ja einen Header um die Ausgabe deines PHP-Skriptes drumrum, also wenn Du mit deinem PHP-Skript ausgibst

    <html>
      <head> <title> foobar </title></head>
      <body> bla </body>
    </html>

    macht dein Server etwas wie das folgende draus:

    HTTP/1.1. OK
    Connection Close
    Date: ....
    Server: ...
    Content-type: text/html

    <html>
    ....
    </html>

    Cookies muss der server in den oberen Teil reinpopeln - wenn du deinen Cookie-Aufurf also irgendwo inmitten der seite stehen hast, also irgendwie so:

    echo <html>
    echo <body>
    ...
    setcookie
    ...
    echo </body>

    ist das zu spät für ihn. Dann hat er sein Geblubber mit HTTP/1.1 bla...schon geschrieben.

    Deswegen muessen Cookies anweisungen so früh wie möglich im PHP-Skript stehen, jedenfalls bevor Du noch irgendwelche Ausgaben machst.
    </mit-halbwissen-prahl>

    Wenns daran nicht liegt, kann es ggf. damit zusammenhängen, dass du lokal testest - ich glaube mich zu erinnern, dass ich mal so ein Problem hatte. Abhilfe: Das ganze auf einem entfernten Webserver (!= deinem eigenen Rechner) ausprobieren.

    Hoffe, ich konnte weiterhelfen (auch wenn ich von PHP keine Ahnung hab *rot-werd*)

    Ciao,
    Jörg