Ankündigung

Einklappen
Keine Ankündigung bisher.

Cookie setzen und weiterleiten...

Einklappen

Neue Werbung 2019

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

  • Cookie setzen und weiterleiten...

    Hallo Leute,

    ich habe folgendes Vorhaben: Ich möchte ein Cookie mit Lebensdauer von 24 Stunden setzen, sobald jemand Seite A besucht.

    Besucht diese Person später Seite B und der Cookie ist vorhanden soll er automatisch auf Seite A weitergeleitet werden. Wird Seite B aber vor Seite A besucht ist der entsprechende Cookie nicht vorhanden und der Besucher soll auf Seite B bleiben.

    Hier ist der Code, den ich ausprobiert habe. Allerdings hat er zu einem whitescreen auf meiner Wordpress Seite geführt...

    PHP-Code:
    if( is_page('Page-A')){
    if(isset(
    $_COOKIE['dz-offer']))
    $cookie $_COOKIE['dz-offer'];}
    }
    else {
    setcookie("dz-offer",time()+(3600*24));
    exit;
    }

    if( 
    is_page('Page-B')){
    if(!isset(
    $_COOKIE['dz-cookie'])){
    header('Location: https://domain.com/page-a');exit;}
    }
    else{
    exit;

    Sorry, falls der Code völliger Schwachsinn ist, aber ich bin eben noch kompletter Anfänger... Weiß einer von euch vielleicht was ich falsch mache und wie es richtig wäre? Ich würde mich sehr über eine Antwort freuen!

    +++ UPDATE +++

    Inzwischen habe ich es geschafft meinen Code so zu modifizieren, dass kein Error mehr erscheint. Allerdings wird leider kein Cookie gesetzt, wenn ich die Seite "test-2" besuche... Hier der aktuelle Code:

    if( is_page('test-2’)){
    if(isset($_COOKIE['dz_offer'])){
    $cookie = $_COOKIE['dz_offer'];
    }
    else{
    setcookie('dz_offer', time() + 60*60*24, '/');
    }
    }

    if( is_page('test‘)){
    if (isset($_COOKIE['dz_offer‘])){
    header(„Location: https://esxample.com/test-2“);
    exit;
    }
    }

    Habt ihr vielleicht eine Ahnung, wrum das bei mir einfach nicht funktioniert? Über hilfreiche Antworten würde ich mich riesig freuen!

  • #2
    Hallo,

    Besucht diese Person später Seite B und der Cookie ist vorhanden soll er automatisch auf Seite A weitergeleitet werden.
    Genau das Gegenteil davon tust Du aber, schau Dir mal Deine zweite Abfrage nach Page-B genauer an...

    Kommentar


    • #3
      das ist sowieso nicht so ohne weiteres möglich - da JEDE Seite EIGENTLICH nur Zugriff auf IHRE Cookies hat ...

      schau dir mal in einem Browser die Cookies an, die dort gespeichert sind. Die sind immer schön nach Quelle "sortiert"

      Kommentar


      • #4
        Zitat von Arne Drews Beitrag anzeigen
        Hallo,

        Genau das Gegenteil davon tust Du aber, schau Dir mal Deine zweite Abfrage nach Page-B genauer an...
        Was mache ich da falsch? Ich dachte erst wird sichergestellt, dass der Besucher gerade auf Seite B ist. Dann wird geschaut, ob der Cooke "dz_offer" vorhanden ist und wenn ja, sollte man auf Seite A weitergeleitet werden. Wenn der Cookie nicht vorhanden ist, soll er auf der Seite bleiben...

        Kommentar


        • #5
          Zitat von eagle275 Beitrag anzeigen
          das ist sowieso nicht so ohne weiteres möglich - da JEDE Seite EIGENTLICH nur Zugriff auf IHRE Cookies hat ...

          schau dir mal in einem Browser die Cookies an, die dort gespeichert sind. Die sind immer schön nach Quelle "sortiert"
          Ist es nicht möglich seitenübergreifende Cookies zu erstellen?

          Kommentar


          • #6
            Zitat von Luckylangh Beitrag anzeigen
            Ist es nicht möglich seitenübergreifende Cookies zu erstellen?
            Cookies können nicht Domain-übergreifend gesetzt werden. Ansonsten wäre das eine riesige Sicherheitslücke. Wenn zwei Seiten das selbe Cookie verwenden wollen, müssen sie in der selben Domain laufen.

            Kommentar


            • #7
              Luckylangh - gehen wir mal davon aus, dass beide Seiten auf der gleichen Domain liegen ... dann hängt es eigentlich nur am Negieren der IF-Bedingung ...

              du schreibst ja, WENN der Cookie gesetzt ist, willst du von Seite B auf Seite A leiten ... also nix !isset .. sondern isset ....

              Kommentar


              • #8
                Zitat von hellbringer Beitrag anzeigen

                Cookies können nicht Domain-übergreifend gesetzt werden. Ansonsten wäre das eine riesige Sicherheitslücke. Wenn zwei Seiten das selbe Cookie verwenden wollen, müssen sie in der selben Domain laufen.
                Nein, es ist schon die gleiche Domain... Nur eben unterschiedliche Seiten. Da habe ich mich wohl missverständlich ausgedrückt.

                Kommentar


                • #9
                  Zitat von eagle275 Beitrag anzeigen
                  Luckylangh - gehen wir mal davon aus, dass beide Seiten auf der gleichen Domain liegen ... dann hängt es eigentlich nur am Negieren der IF-Bedingung ...

                  du schreibst ja, WENN der Cookie gesetzt ist, willst du von Seite B auf Seite A leiten ... also nix !isset .. sondern isset ....

                  Ah, vielen Dank für den Hinweis! Das wusste ich nicht... Glaubst du der Rest passt dann so? Ich habe irgendwo noch gelesen, dass man "exit()" statt nur "exit" verwenden soll... Ist das richtig?

                  Kommentar


                  • #10
                    Zitat von Luckylangh Beitrag anzeigen
                    Ich habe irgendwo noch gelesen, dass man "exit()" statt nur "exit" verwenden soll... Ist das richtig?
                    Es sollte eigentlich gar nicht notwendig sein exit zu verwenden. Man sollte nicht fluchtartig seine Anwendungen verlassen müssen.

                    Kommentar


                    • #11
                      nach header-Location ist AN DER STELLE normalerweise Schluss - es erfolgt ein neuer Request an den Webserver ... der alte Request ist abgehakt ...

                      Kommentar


                      • #12
                        Nach einem header-location setze ich grundsätzlich allerdings auch ein exit;
                        Das rührt allerdings aus der Vergangenheit, wo tatsächlich Dinge nach dem header noch verarbeitet wurden. Ich weiß jetzt nicht mehr, was genau und warum, aber ein exit hat Abhilfe geschaffen.
                        Ist auch in irgendeinem alten Thread hier nachlesbar, meine ich. Hatte mich seinerzeit hier an das Forum gewandt.

                        Kommentar


                        • #13
                          Zitat von Arne Drews Beitrag anzeigen
                          Nach einem header-location setze ich grundsätzlich allerdings auch ein exit;
                          Das rührt allerdings aus der Vergangenheit, wo tatsächlich Dinge nach dem header noch verarbeitet wurden. Ich weiß jetzt nicht mehr, was genau und warum, aber ein exit hat Abhilfe geschaffen.
                          Ist auch in irgendeinem alten Thread hier nachlesbar, meine ich. Hatte mich seinerzeit hier an das Forum gewandt.
                          Das passiert, weil der Redirect ein HTTP header ist... Header werden erst gesendet, wenn entweder der HTTP-Body beginnt oder das Script endet. Heisst: solange das header-sendende Script keine weitere Ausgabe macht, landet der Header erst beim Client wenn das Script endet.

                          Anderes Beispiel ist der Download per readfile(). Beendet man das Script nicht nach dem readfile(), könnten im weiteren Verlauf des Scripts noch Ausgaben gemacht werden, die dann in der Downloaddatei beim Client landen (und die Datei kaputt machen).

                          Kommentar


                          • #14
                            Aha... Jetzt weiß ich wenigstens, warum das so war, danke!

                            Kommentar

                            Lädt...
                            X