michael: prüfen ob cookie gesetzt wurde/existiert

hallo alle zusammen,

ich hätte mal 2 generelle fragen zu cookies und php.

  1. wie kann ich prüfen, ob ein bestimmter cookie bereits gesetzt wurde?

ich wollte es mit isset($_COOKIE['cookiename']) prüfen,
bin mir aber nicht sicher ob das wirklich alles abfängt?

  1. wie kann ich prüfen, ob ein besucher cookies akzeptiert?

ich dache, ich setze einfach einen cookie mit setcookie und fange den rückgabewert ab - entweder er konnte gesetzt werden oder nicht -> hinweis an den besucher, das er seine cookies deaktiviert hat.
oder gibt es noch andere möglichkeiten, das zu tun?

bin für jeden lösungsansatz zu haben,
viele grüße,
micha

  1. Moin!

    1. wie kann ich prüfen, ob ein bestimmter cookie bereits gesetzt wurde?
      ich wollte es mit isset($_COOKIE['cookiename']) prüfen,
      bin mir aber nicht sicher ob das wirklich alles abfängt?

    Ja so prüft man es : )
    Und was sollte alles abgefangen werden?

    1. wie kann ich prüfen, ob ein besucher cookies akzeptiert?

    29.3. Wie stelle ich fest, ob der Client die Cookie-Annahme verweigert?
    http://www.dclp-faq.de/q/q-sessions-cookie.html

    rgds, Till

  2. Hello,

    1. wie kann ich prüfen, ob ein bestimmter cookie bereits gesetzt wurde?

    ich wollte es mit isset($_COOKIE['cookiename']) prüfen,
    bin mir aber nicht sicher ob das wirklich alles abfängt?

    Damit kann man prüfen, ob ein bestimmter Cookie bereits "gesetzt", gesendet und per nächstem Request des Clients wieder beim Server angekommen ist.

    Wenn Du wissen willst, ob Dein Script den Cookie bereits in die Headerlist zum Senden an den Client eingetragen hat, schau Dir mal dieses Testscript an:

    <?php  ### headerlist.php ### Autor:Thomas Schmieder ###

    setcookie() will add a response header on its own

    setcookie('foo', 'bar');

    Define a custom response header

    This will be ignored by most clients

    header("X-Sample-Test: foo");        ## uncomment to test it

    Specify plain text content in our response

    header('Content-type: text/plain');  ## uncomment to test it

    What headers are going to be sent?

    echo "<pre>";

    if(function_exists("headers_list"))
    {
      print_r(headers_list());
    }
    elseif(function_exists("apache_response_headers"))
    {
      print_r(apache_response_headers());
    }
    else
    {
      echo "\nkeine Header-Listing-Funktion verfügbar\n";
    }
    echo "</pre>";

    ?>

    1. wie kann ich prüfen, ob ein besucher cookies akzeptiert?

    ich dache, ich setze einfach einen cookie mit setcookie und fange den rückgabewert ab - entweder er konnte gesetzt werden oder nicht -> hinweis an den besucher, das er seine cookies deaktiviert hat.
    oder gibt es noch andere möglichkeiten, das zu tun?

    Das ist im Prinzip richtig. Du musst den Client nur dazu bewegen, "von alleine" zu antworten. Das kannst Du versuchen mit einem Location-Header:

    <?php  ### cookie_enabled.php ###

    ## Cookie setzen:
      setcookie('CookiesEnabled', 'Yes');

    ## und den Client um Antwort bitten
      header("Location: http://www.example.com/cookie_resent.php"]);
      exit;

    ...

    ?>

    <?php ### cookie_resent.php ###

    echo "<pre>";
      print_r($_COOKIE);
      echo "</pre>";

    ?>

    Der Einfachheit habe ich zwei Scripte daraus gemacht, da bei einem selbstrefenzierenden Script sonst eine unendliche Schleife entstehen würde, wenn der Client keine Cookies zurücksendet.

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen