Ankündigung

Einklappen
Keine Ankündigung bisher.

überprüfen ob Cookies vom Browser akzeptiert werden

Einklappen

Neue Werbung 2019

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

  • überprüfen ob Cookies vom Browser akzeptiert werden

    Hallo!
    wie kann ich feststellen, ob der Browser von einem User Cookies akzeptiert?
    ich hatte mir dazu folgenden Code überlegt:
    PHP-Code:
    <?php
    function check_cookie() {
        
    setcookie"CookieTest""0123456789"time()+60"/" );
             if (
    $_COOKIE['CookieTest'] == "0123456789"){
                 
    setcookie"CookieTest"""time()-60"/" );
                 return 
    true;
             } else {
                     return 
    false;
             }
    }
    ?>
    so geht es aber leider nicht, da nur bei jedem zweiten Aufruf der Cookie erkannt wird.

    Gruß Drago


  • #2
    Cookies werden vom Server im Header der Antwort geschickt. Mit dieser Seite zB hat mein Browser den Cookie php_de_t erhalten. Die Antwort vom Server sah so aus:
    HTTP/1.1 200 OK
    [...]
    X-Powered-By: PHP/4.4.0
    Set-Cookie: php_de_t=[lange Zeichenkette]; path=/; domain=.phpfriend.de
    [...]
    Content-Type: text/html
    content-style-type: text/css

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html dir="ltr">
    <head>
    [...]
    Der Browser schickt -wenn er den Cookie akzeptiert- jedes Mal im Header der Anfrage mit.
    Mein Browser akzeptert den Keks von phpfriend.de und schickt deshalb den Cookie bei den nächsten Anfragen an phpfriend.de mit
    GET /forum/ftopic47983.html HTTP/1.1
    Host: www.phpfriend.de
    [...]
    Referer: http://www.phpfriend.de/forum/forum1.html
    Cookie: php_de_t=[lange Zeichenkette]
    Wenn php in den Headerdaten des Clients so ein Cookie: php_de_t=[lange Zeichenkette] findet, erstellt es ein Element $_COOKIE['php_de_t] mit dem entsprechenden Wert.

    Deshalb "siehst" Du Deinen Cookie erst bei der nächsten Anfrage in $_COOKIE; der client muss den Wert erstmal wieder an den Server schicken, damit php tätig wird.
    Wenn der Browser den Cookie nicht akzeptiert, schickt er diese Headerzeile nicht mit - keine andere Warnung und ähnliches. Die Zeile fehlt einfach und php erstellt deshalb auch kein Element in $_COOKIE.

    Kommentar


    • #3
      ok Danke erstmal!

      also muss ich jetzt dann für die Überprüfung die Seite immer zweimal laden lassen.?

      gibt es noch eine andere Alternative?

      Kommentar


      • #4
        So allgemein fällt mir jedenfalls keine ein.
        Wofür brauchst Du es denn?

        Kommentar


        • #5
          ich will auf ner Website für nen Kumpel einige Daten bezüglich Login usw. über Sessions von einer Seite zur nächsten übernehmen. Die Session-ID wird dabei ja über Cookies übergeben und darum wollte ich vorher überprüfen, ob der Browser Cookies annimmt und falls nich eine Fehlermeldung ausgeben.
          mir ist auch klar, dass ich die SID auck über einen String in der Adresszeile übergeben kann, aber das möchte ich eigentlich vermeiden, da ich schon oft gesehen habe, dass jemand dann die SID in einem Link als Lesezeichen mit gespeichert hat und dann immer die gleiche Session wieder aufgenommen wurde.

          Kommentar

          Lädt...
          X