Cookies abfragen - Problem !!!

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

  • Cookies abfragen - Problem !!!

    Hi Leute,

    ich habe folgendes Problem:
    Ich lasse abfragen, ob ein Session ein Cookie angelegt hat. Ist dies nicht der Fall, weis ich, dass Cookies in dem Browser deaktiviert sind und ich muß die Session-ID dem Link übergeben.

    Meine Abfrage sieht so aus:
    if (!$_COOKIE['mysid'] || $_COOKIE['mysid'] != session_id()){
    // Hier ersetzte den Link
    }
    Ich lasse abfragen ob überhaupt das Cookie "mysid" existiert oder ob das Cookie eine andere Session IS gespeichert hat als die aktuelle.

    Das Funktioniert auch schon FAST prima bis auf folgende Tatsache:
    In den Sicherheitseinstellungen vom IE kann ich unter Cookies wählen zwischen "Cookies Annehmen, die gespeichert sind" und "Cookies pro Sitzung annehmen (nicht gespeichert)".
    Wenn beides deaktiviert ist funktionierts. Wenn ich aber letzteren Punkt aktiviert lasse funktionierts nicht, obwohl ich alle Cookies gelöscht habe. Es wird mit in den Temp. Internet Files auch kein Cookie von meinem Server angezeigt. Also sollte ja auch keins vorhanden sein. Dennoch wird mir die Session ID nicht angehänt.

    Hat jemand einen Rat?

    Viele Grüße,
    Andi

  • #2
    eigentlich brauchst du das nicht prüfen. apache/php hängt im falle einer nicht-cookie-erlaubnis die PHPSESSID automatisch an jede url an.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Allerdings NICHT, wenn man einen Absoluten Pfad angibt, um wie in meinem Fall auf ein SSL-Verschlüsseltes Formular zu Linken und daraus wieder zurück zu HTTP.

      Darum brauche ich exakt eine möglickeit festzustellen, ob ein Cookie gesetzt wurde oder nicht. Was ja auch fast funktioniert.

      Grüße,
      Andi

      Kommentar


      • #4
        wenn du zwischen https und http wechseln willst, kannst du sowieso sessions vergessen, da dies unabhängig sind.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Komischerweise funktioniert es aber bei mir!
          Ich kann zwischen HTTP und HTTPS beliebig of hin und her springen. Solange ich die Session-ID in dem Link übergebe behält er auch alle Daten bei.

          Das ist aber auch alles gar nicht meine Frage. Lassen wir mal den Zweck weg. Dann habe ich immer noch das Problem, dass bei einer Abfrage, ob mein Cookie existiert, mein Code annimt es gäbe eins, obwohl das nicht der Fall ist.

          Kann man das irgendwie anders lösen? (Bitte noch mal meinen ersten Thread lesen, da stehen alle Infos drin.)

          Grüße & Dank,
          Andi

          Kommentar


          • #6
            und hier kann ich jetzt dennoch was sagen.... COOKIE != SESSIONCOOKIE

            es sind zwar beides cookies, aber werden vom browser anders behandelt.

            hänge doch die session-id immer an.
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Aber in dem Cookie wird doch die aktuelle Session-ID abgelegt.

              Das ganze System ist etwas komplexer. Der Kunde möchte auch per Statistoktool seine Seiten auswerten. Wenn dann IMMER eine andere Session ID angehängt wird, ist es so gut wie unmöglich genaue Statistiken zu erhalten. Darum möchten wir weitgehenst auf die permanente Angabe der ID im Link verzichten. Lediglich für die paar User, die dann doch mal die Cookies deaktiviert habe sollten würden wir dann die Session ID anhägen.

              Ich bin da auch schon total am verzweifeln, aber nun funktioniert ja alles fast wie gewünscht. Bis eben auf die Tatsache, dass bei "halb" deaktivierten Cookies das Nichtvorhandensein nicht registriert wird.
              Aber scheiß drauf. Wenn dass nicht zu beheben ist, dann bleibts wie's ist!

              Grüße, Andi

              Kommentar


              • #8
                Re: Cookies abfragen - Problem !!!

                Original geschrieben von andik2000
                ...Wenn ich aber letzteren Punkt aktiviert lasse funktionierts nicht, obwohl ich alle Cookies gelöscht habe. Es wird mit in den Temp. Internet Files auch kein Cookie von meinem Server angezeigt. Also sollte ja auch keins vorhanden sein. Dennoch wird mir die Session ID nicht angehänt...
                Wie wird der Cookie gesetzt?
                Stell mal beide Werte im IE (Platte und Sitzung) auf 'Eingabeaufforderung' und schau Dir dann die Details an. Ist da alles so, wie es sollte?
                Konrad

                In a world without walls and fences, who needs Windows and Gates ?
                (Sun Microsystems)

                Kommentar


                • #9
                  hmmm, also das richtige Cookie könntest du über $_COOKIE[session_name()] finden.

                  Das automatische anhängen geschieht nur, wenn es auch aktiviert wurde (enable_trans_sid).

                  Ich hab das prüfen auf vorhandene Session-Cookies bei mir mal folgendermaßen gelöst:

                  PHP-Code:
                  IF (SID == "SID" || SID == "")
                    
                  // Session Cookie gesetzt
                  ELSE
                    
                  // Session Cookie nicht gesetzt 
                  das baut darauf auf, dass PHP die Konstante SID zwar (glaub ich) immer definiert, aber nur mit einem Inhalt versieht, wenn kein Cookie gesetzt wurde, damit man dann über url?SID den passenden Session-Parameter anhängen kann.
                  hopka.net!

                  Kommentar


                  • #10
                    http://www.php.net/manual/de/function.session-id.php tut kund
                    Die Konstante SID kann auch dazu verwendet werden, den aktuellen Namen und die Session-ID als Zeichenkette passend zum Anhängen an URLs zu erhalten. Beachten Sie, dass SID nur definiert ist, wenn vom Client nicht das richtige Cookie gesendet wurde. Siehe auch Session Funktionen.
                    http://www.php.net/manual/de/ref.session.php wiederum behauptet ganz unverfroren
                    SID (string)

                    Konstante, die den Namen und die ID der Session in der Form "name=ID" enthält.
                    jetzt sollte so zeimlich alles klar und wissenschaftlich belegt sein oder? *g*

                    P.S. prüfen, ob SID definiert ist geht mit http://www.php.net/manual/de/function.defined.php
                    Zuletzt geändert von mrhappiness; 21.07.2003, 22:28.
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      ok, alles klar.

                      Is ne weile her, dass ich das mal gebraucht hatte, und zu der Zeit hatte ich noch nich so viel Ahnung

                      Dann kann man auch das SID == "SID" weglassen und durch eine Prüfung mit defined ersetzen.

                      Ich weiß aus Erfahrung, dass die erste Quelle (http://php.net/session_id) Recht hat.
                      hopka.net!

                      Kommentar


                      • #12
                        Original geschrieben von Hopka
                        Dann kann man auch das SID == "SID" weglassen und durch eine Prüfung mit defined ersetzen.
                        kannst sogar das SID=="" weglassen
                        Ich weiß aus Erfahrung, dass die erste Quelle (http://php.net/session_id) Recht hat.
                        fein, bestätigung
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar

                        Lädt...
                        X