Cookie prüfen

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

  • Cookie prüfen

    Hallo alle zusammen,

    ich prüfe in meinem Script ob PHP einen Cookie setzen kann. Komischerweise habe ich das Problem, dass ich bei jedem zweiten Refresh des Scripts den Cookie noch habe und er nicht gelöscht wurde, obwohl ich die Anweisung dazu gab. Theoretisch müsste er doch, wenn er den Cookie setzen kann, immer wieder die Anweisung des Löschens durchlaufen.

    PHP-Code:
    <?php
    /**
     * Check for cookies
     */
    setcookie('cookietest''x'time()+60*60*24*30);
    if (isset(
    $_COOKIE['cookietest']))  {
        
    $cntr->config['pg_setup']['acc_cookies'] = true;
        
    setcookie('cookietest'''time()-3600);
    } else {
        
    $cntr->config['pg_setup']['acc_cookies'] = false;
    }
    ?>
    Meine Frage(n):

    - Ist das die richtige Art und Weise zu prüfen ob ein Cookie gesetzt werden kann ?
    - Wieso wird der Cookie nur jedes 2. Mal gelöscht ?

    Ich hoffe ihr könnt mir weiterhelfen.

    Mit freundlichen Grüßen
    .bluma

  • #2
    Re: Cookie prüfen

    Original geschrieben von bluma
    - Ist das die richtige Art und Weise zu prüfen ob ein Cookie gesetzt werden kann ?
    Nein.

    Das Manual bzgl. setcookie klärt dich unter "häufige Probleme" darüber auf.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Cookies werden nicht sichtbar, bevor nicht eine Seite geladen wird, für die das Cookie sichtbar sein soll. Um zu testen, ob ein Cookie erfolgreich gesetzt wurde, prüfen Sie noch vor der Ablaufzeit auf der nächsten geladenen Seite, ob das Cookie vorhanden ist. Die Ablaufzeit wird mittels des Parameters expire gesetzt. Eine gute Möglichkeit, die Existenz von Cookies zu prüfen, ist ein print_r($_COOKIE); Aufruf.
      Das würde wohl erkären, warum der Cookie nur jedes zweite Mal gesetzt ist. Die Frage ist nur - wie löst man dieses Problem ? Ich würde vorschlagen ggf. einen header() auf die eigene Datei zu machen und dann zu prüfen ob er gesetzt wurde. Nur dann muss ich ihm per Session mitgeben, dass er bereits den header() durchgeführt hat, sonst hängt er sich in einer Schleife auf.

      Würde es so funktionieren oder gibt es einen besseren Weg?

      MfG bluma

      Nachtrag:
      ------------------------------------

      Ich habe das mal so gemacht - mit Cookies aktiviert klappt es wunderbar. Mit deaktivierten Cookies muss ich die PHPSESSID über den header mit in die URL geben. Nun klappt es alles soweit ich es habe testen können:



      PHP-Code:

      /**
       * Check for cookies
       */

      if($_SESSION['header'] == 1) {
          if (isset(
      $_COOKIE['cookietest']) == true)  {
              
      $cntr->config['pg_setup']['acc_cookies'] = true;
              
      setcookie("cookietest"false);
          } else {
              
      $cntr->config['pg_setup']['acc_cookies'] = false;
          }
          
      $_SESSION['header'] = 0;
      } else {
          
      setcookie("cookietest"'test');
          
      $_SESSION['header'] = 1;
          
      header("Location: index.php?PHPSESSID=".session_id());

      Zuletzt geändert von bluma; 25.05.2006, 00:01.

      Kommentar


      • #4
        Gibt es eine Möglichkeit herauszufinden welche URL augerufen wurde? Momentan verweise ich ja nur auf die index.php und es fehlen die Parameter. Mit $_SERVER['HTTP_REFERER'] erwische ich auch nur die Datei. Hat jemand einen Tipp ?

        MfG bluma

        Kommentar


        • #5
          Original geschrieben von bluma
          Gibt es eine Möglichkeit herauszufinden welche URL augerufen wurde? Momentan verweise ich ja nur auf die index.php und es fehlen die Parameter. Mit $_SERVER['HTTP_REFERER'] erwische ich auch nur die Datei. Hat jemand einen Tipp ?

          MfG bluma
          $_SERVER['REQUEST_URI']

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar


          • #6
            Original geschrieben von ghostgambler
            $_SERVER['REQUEST_URI']
            Vielen Dank ghostgambler - du hast mir sehr geholfen.

            MfG bluma
            Zuletzt geändert von bluma; 27.05.2006, 18:18.

            Kommentar


            • #7
              Für das Cookie habe ich kürzlich eine nette Methode gelesen. In der Hauptseite das Cookie setzen und ein <img src=yyy.php> einbauen. Das yyy.php setzt in der Session ob das Cookie vorhanden ist (und liefert ein 1x1 image).

              Kommentar


              • #8
                Original geschrieben von muh (newbie)
                Für das Cookie habe ich kürzlich eine nette Methode gelesen. In der Hauptseite das Cookie setzen und ein <img src=yyy.php> einbauen. Das yyy.php setzt in der Session ob das Cookie vorhanden ist (und liefert ein 1x1 image).
                Das ist auch eine sehr nette Methode, die ich mal prüfen werde.
                Vielen Dank auch dir.

                MfG bluma

                Kommentar


                • #9
                  Entschuldigt den zweiten Post.

                  Gibt es keine vernünftige Methode um zu prüfen ob der Client Cookies akzeptiert ? Gut, das würde in diesem Fall dem Prinzip des HTTP-Protokolls widersprechen. Dennoch denke ich nicht, dass meine "Lösung" das Optimum ist. Ich würde mich über eine kurze Anregung oder einen Kommentar sehr freuen, da ich mit der mometanen Lösung nicht zufrieden bin.

                  MfG bluma

                  Kommentar

                  Lädt...
                  X