Ankündigung

Einklappen
Keine Ankündigung bisher.

Cookie-Erlaubnis prüfen misslingt beim header()-Recall

Einklappen

Neue Werbung 2019

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

  • Cookie-Erlaubnis prüfen misslingt beim header()-Recall

    Hallo,

    ich versuche bei jedem ersten Website-Aufruf überprüfen zu lassen, ob der User-Browser Cookies zulässt oder nicht (falls nicht, wird immer eine Warn-Meldung ausgegeben).

    Mein Ansatz:

    PHP-Code:
      function initialize()
      {
     if(
    SID != '' && isset($_GET['cookie_check']) && $_GET['cookie_check'] == 'yes')    // keine Cookies erlaubt --> Status wird in Session festgehalten
        
    {
          
    $_SESSION['cookies_allowed'] = 0;
        }
        else if(
    SID != '')                                        // erster Website-Aufruf --> Recall mit Cookie-Check
        
    {
          
    $url $_SERVER['SCRIPT_FILENAME'];
          
    $url .= ($_SERVER['QUERY_STRING'] != '') ? '?'.$_SERVER['QUERY_STRING'] : '';
          
    header('location: '.$url);
        }
        else                                            
    // Cookies erlaubt --> Status wird in Session festgehalten
        
    {
          
    $_SESSION['cookies_allowed'] = 1;
      
    // hier folgen weitere Initialisierungen...

    Für ein paar Versuche hat das Ganze funktioniert wie ich es mir vorstellte, aber ganz plötzlich beim Deaktivieren der Cookies im Browser (Mozilla) kann ich keinen Link mehr laden lassen und es kommt folgende Fehlermeldung:
    Fehler: Umleitungsfehler

    Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.

    Dieses Problem kann manchmal auftreten, wenn Cookies deaktiviert oder abgelehnt werden.
    Weiß jemand, woran das liegen könnte und wie ich der Sache Abhilfe schaffe?

    PS: Es liegt auf jedem Fall am header()-Befehl, da ohne ihn alles funktioniert. Aber ich weiße nochmal darauf hin, dass es auch mit ihm schon funktioniert hatte... erst plötzlich geht es nicht mehr...


  • #2
    Und wie meinst du wird die SESSID gespeichert, wenn der User keine Cookies zulässt?
    Zitat von nikosch
    Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

    Kommentar


    • #3
      Und wie meinst du wird die SESSID gespeichert, wenn der User keine Cookies zulässt?
      Ich verstehe die Frage nicht ganz. Wenn Cookies deaktiviert sind, dann wird die SESSID in der Konstante SID gespeichert, woran ich auch erkennen kann ob Cookies aktiviert sind odern icht (korrigiert mich wenn ich mich täusche).

      Falls du aber darauf hinaus willst, dass die $_SESSION['cookie_allowed'] nicht beständig ist, dann stimme ich dir völlig zu. Das ist aber nicht die Problematik und es reicht mir aus, wenn die Session für das aktuelle Skript zur Laufzeit vorhanden ist.

      Viel wichtiger ist doch die Frage, warum diese Fehlermeldung kommt...

      Kommentar


      • #4
        Ich weiss nicht genau was dein Script macht, aber eigentlich müsste es doch so lauten:

        1. Cookies erlaubt? Session-ID im Cookie abspeichern.
        2. Cookies nicht erlaubt? Session-ID jeweils an die URLs als Parameter anhängen.

        Standardmässig wird die Session-ID in einem Cookie abgespeichert (PHPSESSID) (soviel ich weiss).

        Paar Sachen die mir noch aufgefallen sind, bin nicht sicher ob du darüber bescheid weisst:
        - Konstanten sind nur read only (sollten nur read only sein).
        - (PHP) Webseiten bzw. HTTP(s) sind ohne Sessions (oder dergleichen) state less
        Neu bei PHP, lerne aktuell OOP

        Kommentar


        • #5
          Ich weiss nicht genau was dein Script macht, aber eigentlich müsste es doch so lauten:

          1. Cookies erlaubt? Session-ID im Cookie abspeichern.
          2. Cookies nicht erlaubt? Session-ID jeweils an die URLs als Parameter anhängen.

          Standardmässig wird die Session-ID in einem Cookie abgespeichert (PHPSESSID) (soviel ich weiss).
          Das ist mir klar, aber möchte ich keine SESSID per URL weitergeben, da mir diese Variante viel zu unsicher ist.

          Nochmal, weiß irgendjemand, womit diese plötzlich auftauchende Fehlermeldung beim header() zusammenhängen könnte?

          Kommentar


          • #6
            Dadurch dass SID nicht leer ist, die beiden GET-Parameter aber nie gesetzt werden.
            Zitat von nikosch
            Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

            Kommentar


            • #7
              Dadurch dass SID nicht leer ist, die beiden GET-Parameter aber nie gesetzt werden.
              Ach ja natürlich! So ist es, wenn man alles im Kopf hat, den zweiten Schritt vor dem ersten zu Papier bringt und dann vergisst, den Grundstein überhaupt zu legen

              So muss es natürlich aussehen:
              PHP-Code:
              function initialize()
                {
               if(
              SID != '' && isset($_GET['cookie_check']) && $_GET['cookie_check'] == 'yes')    // keine Cookies erlaubt --> Status wird in Session festgehalten
                  
              {
                    
              $_SESSION['cookies_allowed'] = 0;
                  }
                  else if(
              SID != '')                                        // erster Website-Aufruf --> Recall mit Cookie-Check
                  
              {
                    
              $url $_SERVER['SCRIPT_FILENAME'];
                    
              $url .= ($_SERVER['QUERY_STRING'] != '') ? '?'.$_SERVER['QUERY_STRING'].'&cookie_check=yes' '?cookie_check=yes';
                    
              header('location: '.$url);
                  }
                  else                                            
              // Cookies erlaubt --> Status wird in Session festgehalten
                  
              {
                    
              $_SESSION['cookies_allowed'] = 1;
                
              // hier folgen weitere Initialisierungen...
                

              Vielen Dank für euren mitternächtlichen Support!

              Lg

              Kommentar

              Lädt...
              X