Cookie setzen

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

  • Cookie setzen

    Hallo,

    ich habe das Problem, dass ich mein Cookie zwar lokal beim Testen setzen kann, es dann aber nicht gesetzt wird wenn es Online ist. Das Cookie wird in einer Funktion gesetzt.

    PHP-Code:
        function set_cookie(){
          global 
    $_COOKIE;
          
    setcookie($this->cookie_name.'_session',
                          
    $this->session,time()+$this->cookie_time,'/');
          
    setcookie($this->cookie_name.'_username',
                          
    $this->username,time()+$this->cookie_time,'/');
        } 
    Lokal wird folgendes Cookie erstellt:
    PHP-Code:
    LOGIN_session
    5881a229bdafcf38bed1048e5ef91249
    localhost
    /
    1024
    1561514368
    29806492
    3830520464
    29733066
    *
    LOGIN_username
    admin
    localhost
    /
    1024
    1561514368
    29806492
    3830830464
    29733066

    Kann es sein dass man irgendwo in der Ini einstellen muss, dass ein Cookie erzeugt werden darf? Der Code wird auf jeden Fall durchlaufen, das habe ich mit einer "echo"-Ausgabe getestet.

  • #2
    Ich kann dir zwar nicht bei deinem Problem helfen, aber ist $_COOKIE kein globales Supperarray? Wenn ja muss man es nihct in der function als global markieren.

    Forumregeln!

    Gute PHP-(tutorial-)Seiten

    Kommentar


    • #3
      Re: Cookie setzen

      Original geschrieben von Godfrey
      ich habe das Problem, dass ich mein Cookie zwar lokal beim Testen setzen kann, es dann aber nicht gesetzt wird wenn es Online ist. Das Cookie wird in einer Funktion gesetzt.
      schonmal geguckt, ob dein Browser das Cookie abblockt, wegen irgendwelcher Sicherheitseinstellungen?

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

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

      Kommentar


      • #4
        Original geschrieben von Godfrey
        Kann es sein dass man irgendwo in der Ini einstellen muss, dass ein Cookie erzeugt werden darf? Der Code wird auf jeden Fall durchlaufen, das habe ich mit einer "echo"-Ausgabe getestet.
        Versuchs in deinem script mal mit
        PHP-Code:
        ini_set("session.use_cookies""1"); 
        Original geschrieben von davidovich
        Ich kann dir zwar nicht bei deinem Problem helfen, aber ist $_COOKIE kein globales Supperarray? Wenn ja muss man es nihct in der function als global markieren.
        $_COOKIE ist eine superglobale. Damit geb ich dir recht. Die Zeile ist überflüssig. $_HTTP_COOKIE_VARS jedoch (darum auch veraltet) müsste noch mit global deklariert werden..
        gruss Chris

        [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

        Kommentar


        • #5
          Danke für die Antworten. Habe den Code mal so abgeändert:

          PHP-Code:
                  function set_cookie(){
                global 
          $_HTTP_COOKIE_VARS;
                
          ini_set("session.use_cookies""1");
                
          setcookie($this->cookie_name.'_session',
                                
          $this->session,time()+$this->cookie_time,'/');
                
          setcookie($this->cookie_name.'_username',
                                
          $this->username,time()+$this->cookie_time,'/');
              } 
          Leider hat sich nichts verändert. Das Cookie wird nicht gesetzt.

          Am Browser kann es nicht liegen, hab ich überprüft und es werden bei mir ja auch Cookies erlaubt. Lokal wird es nach wie vor erzeugt, nur Online nicht mehr. Irgendwie bringt mich sowas zum Verzweifeln.

          Daran, dass das Cookie in einer Klasse erstell wird kann es doch nicht liegen?

          Kommentar


          • #6
            Original geschrieben von Godfrey
            Danke für die Antworten. Habe den Code mal so abgeändert:

            PHP-Code:
                    function set_cookie(){
                  global 
            $_HTTP_COOKIE_VARS;
                  
            ini_set("session.use_cookies""1");
                  
            setcookie($this->cookie_name.'_session',
                                  
            $this->session,time()+$this->cookie_time,'/');
                  
            setcookie($this->cookie_name.'_username',
                                  
            $this->username,time()+$this->cookie_time,'/');
                } 
            Wer hat denn von sowas gesprochen?

            Die COOKIE_VARS sind veraltet.. Du solltest das ganze global gedöns weglassen (brauchst du bei $_COOKIE) nicht.

            in deinem Script (nicht unbedingt in der funktion ini_set verwenden oder die php.ini ändern.

            phpinfo() ausführen und nach der vermeindlichen session.use_cookies variable suchen wäre erst mal von vorteil um das ganze auszuschliessen.
            gruss Chris

            [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

            Kommentar


            • #7
              Hab die globals rausgeschmissen. Das mit den COOKIE_VARS hab ich wohl missverstanden, war aus dem Satz raus:

              $_COOKIE ist eine superglobale. Damit geb ich dir recht. Die Zeile ist überflüssig. $_HTTP_COOKIE_VARS jedoch (darum auch veraltet) müsste noch mit global deklariert werden..
              In der php.ini sind Cookies auch gesetzt. Also habe ich den extra ini im Code auch weggelassen. Sollte eigentlich alles funktionieren, trotzdem erstellt er mir Online das Cookie nicht...

              Hab es auch mal mit dieser Funktion versucht:
              PHP-Code:
              void session_set_cookie_params(int lifetime [, string path [, string domain]]) 
              leider mit dem gleichen Ergebniss. Weiss im Moment wirklich nicht weiter....

              Kommentar


              • #8
                1. mach mal das E_ALL an.
                2. kontrolliere mit irgendeinem http-traffic-analyzer, ob die entsprechenden header abgeschickt werden.

                Kommentar


                • #9
                  So, bin mal wieder dazugekommen hier weiter zu testen. Da es ne private Page ist hab ich ja das Glück, dass es nicht so zeitkritisch ist.

                  Beim setzen der E-ALL habe ich die Fehlermeldungen:

                  PHP-Code:
                  WarningCannot modify header information headers already sent by (output started
                  at 
                  /homepages/38/d29043923/htdocs/mot_preise/test.php:8)
                  in /homepages/38/d29043923/htdocs/mot_preise/test.php on line 10

                  Warning
                  Cannot modify header information headers already sent by (output started
                  at 
                  /homepages/38/d29043923/htdocs/mot_preise/test.php:8
                  in /homepages/38/d29043923/htdocs/mot_preise/test.php on line 11 
                  erhalten.

                  Nach einigen Suchergebnissen konnte ich auch den Fehler finden. Es lag daran, dass das Setzen des Cookies innerhalb des Pageaufbaus stattfand. Das heisst, es wurden schon Daten vor dem Setzen an den Browser gesendet was das Setzen des Headers verhindertet. Danke an penizillin der den Entscheidenden Hinweis gegeben hat.

                  Kommentar


                  • #10
                    Danke an penizillin der den Entscheidenden Hinweis gegeben hat.
                    OKOK Danke an penizilin aber da hättest du schon viel früher drauf kommen können....
                    E_ALL wirst du hier im Forum in FAST jedem PHP Thread wiederfinden.


                    TZTZTZ Schäm dich...
                    gruss Chris

                    [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                    Kommentar


                    • #11
                      Original geschrieben von hhcm
                      OKOK Danke an penizilin aber da hättest du schon viel früher drauf kommen können....
                      E_ALL wirst du hier im Forum in FAST jedem PHP Thread wiederfinden.


                      TZTZTZ Schäm dich...
                      Hätt ich können, hab ich aber nicht. Und ich bin sicher nicht der einzige dem solche Fehler passieren. Aber muss man sich deshalb gleich so Oberlehrerhaft verhalten? Könnte mir gut vorstellen, dass auch Dir Anfangs solche oder ähnliche Fehler unterlaufen sind....

                      Kommentar


                      • #12
                        Och ne.. Nicht direkt in den falschen hals bekommen.. Ich wollte nur soetwas sagen wie

                        oder

                        *g*
                        gruss Chris

                        [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                        Kommentar

                        Lädt...
                        X