Cookieproblem

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

  • Cookieproblem

    Hallihallo,
    ich hab hier einen Counter der in Verbindung mit Cookies & Datenbank die Besucher zählen soll.
    Sobald der Besucher die Seite aufruft wird geprüft, ob das Cookie "last_view" gesetzt ist, wenn nicht, wird es gesetzt.
    Dann wird geprüft, ob das Cookie jetzt vorhanden ist, und wenn ja, ein Eintrag in der DB vorgenommen.

    Es wird also nur dann ein Eintrag vorgenommen, wenn zu Beginn kein Cookie gesetzt war, aber ein neues Cookie gesetzt werden konnte.

    Hier der Code:
    PHP-Code:
    #Prüfen ob Cookie existiert
    if(!IsSet($_COOKIE["last_view"])) {
        
    #Wenn nicht anlegen
        
    setcookie("last_view",$datum,$datum+3600,"/",".domain.de",0);
        
    #Prüfen ob gesetzt wurde
        
    if(IsSet($_COOKIE["last_view"])) {
            
    #Eintragen
            
    mysql_query("INSERT INTO besucher_ip VALUES ('','".$ip."','".$datum."')");
        }

    Das Cookie wird gesetzt, aber er kommt nicht in die nächste Verzweigung. Kann mir jemand sagen, woran das liegt?
    Die Variablen $datum & $ip sind gesetzt, DB Verbindung ist offen (es geht ja nichts ums Query)

    Grüße,
    Mordred
    Zuletzt geändert von Mordred; 01.05.2005, 12:04.

  • #2
    IsSet? öhm

    Kommentar


    • #3
      Original geschrieben von Schnoop
      IsSet? öhm
      ob isset oder IsSet ist gehüpft wie gesprungen

      Kommentar


      • #4
        Joa, hab ich auch gerade gemerkt. Hat mich im ersten Moment stutzig gemacht

        Kann es sein das das Cookie setzen ein wenig Zeit beansprucht und dieser noch nicht gesetzt ist wenn du die Abfrage machst?

        Kommentar


        • #5
          Genau das vermute ich, nur ich hab keine Idee, wie ich das umgehen kann....

          Kommentar


          • #6
            Naja, früher hätte man in diesem Fall ne Leerschleife gebaut. LOL

            Nee, nu mal im Ernst:

            http://de.php.net/sleep

            Kommentar


            • #7
              Original geschrieben von Schnoop
              http://de.php.net/sleep
              schon probiert

              Kommentar


              • #8
                In was für einem Zeitraum?

                Ist denn der Cookie beim zweiten Aufruf gesetzt? Oder geht er dann auch über den Zweig weg?

                Kommentar


                • #9
                  5 und 10 sekunden hab ich probiert, aber selbst wenns dann funktionierten würd, wär ein bisschen schwachsinnig.

                  Also das Cookie wird wie oben schon erwähnt zwar gesetzt, aber er geht immer über den Zweig hinweg.....

                  //edit: so nebenbei: ich habs auch mit setcookie()==True und dann eintragen probiert, aber dann bimmelt der counter bei deaktivierten Cookies [im firefox, nicht im IE] hoch....
                  Zuletzt geändert von Mordred; 01.05.2005, 11:56.

                  Kommentar


                  • #10
                    Joa so.

                    Ich hab das ganze mal durchgetestet.
                    Dein Cookie wurde nicht gesetzt, zumindest wenn ich deinen Code bei mir ausführe.

                    Was steht bei dir im $datum drin? Ich hab $datum mal durch time() ersetzt und es funzt nu.

                    Kommentar


                    • #11
                      RTFM!
                      http://www.php.net/manual/de/function.setcookie.php, abschnitt "Häufige Probleme"
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Hm, ich glaub das funzt so wie du es vorhast nicht.

                        Laut Manual
                        Cookies werden nicht sichtbar, bevor nicht eine Seite geladen wird, in der das Cookie sichtbar sein soll. Um zu testen, ob ein Cookie erfolgreich gesetzt wurde, prüfen Sie noch vor der Ablaufzeit auf einer weiteren Seite ob das Cookie vorhanden ist. Die Ablaufzeit wird mittels dem Parameter expire gesetzt. Eine nette Möglichkeit um die Existenz von Cookies zu prüfen, ist print_r($_COOKIE); aufzurufen.
                        Es sieht so aus als ob die Cookies erst nach dem Reload der Seite zu Verfügung stehen.

                        Ich bin nu total confused.

                        Kommentar


                        • #13
                          Aha...hmm...ups....ok....muss ich mir was andres einfallen lassen...

                          Kommentar


                          • #14
                            Original geschrieben von Schnoop
                            Es sieht so aus als ob die Cookies erst nach dem Reload der Seite zu Verfügung stehen.
                            aber natürlich.

                            Ich bin nu total confused.
                            warum? anders geht es doch gar nicht.

                            der server bittet im response header den client, eine information als cookie irgendwo abzulegen.

                            ob der client das tut oder nicht, darüber bekommt er erst mal keinerlei rückmeldung.

                            erst beim nächsten request durch den client wird der server dann merken, ob der client darin die information aus dem cookie wieder mitschickt, oder nicht.
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Kommentar


                            • #15
                              Irgendwo logisch. Wer lesen kann ich im Vorteil

                              Kommentar

                              Lädt...
                              X