Probleme beim setzte/lesen vom Cookie

FrazeColder

Lt. Commander
Registriert
Okt. 2013
Beiträge
1.718
Moin zusammen,

ich habe ein paar Zeilen Code für eine Webseite geschrieben, welcher einen Cookie beim User setzt. Anfangs wird dieser Cookie mit dem Wert 24 erstellt. Und jedes mal wenn die Seite neu geladen wird bzw. wenn der User neu auf die Seite kommt, wird der Wert des Cookies um 5-8 verringert. Leider funktioniert das bis dato nur, wenn der User die Seite direkt neu lädt und nicht wenn er auf eine andere Seite geht und nach einem Tag oder einigen Stunde wieder zurück auf die Seite kommt.

Es sollen aber beide Versionen und insbesondere die letzte Version unterstützt werden... Ich weiß nur leider nicht, wieso das nicht funktioniert...

Hier könnt ihr euch das ganze mal anschauen: https://www.digital-media-products.de/der-bildbearbeitungskurs/
Ich gebe den Wert des Cookies oben Links aus!

Hier mal soweit der Code bis jetzt:
PHP Snippet #1 (Wird im Header ausgeführt)
Code:
<?php

    if(is_page(161)){
         if(isset($_COOKIE['limitedProduct'])){
            $old =  $_COOKIE['limitedProduct'];
            $value = $_COOKIE["limitedProduct"] - rand(5,8);
            setcookie('limitedProduct', $value, (time()+31536000));
            echo 'I got set! -> Old: ' . var_export($old) . " - New: " . var_export($value); 
        }else{
            setcookie('limitedProduct', '24', (time()+31536000));
            echo 'I got init! -> 24';
        }   
    }
?>

PHP Snippet #2 (Gibt den Wert des Cookies auf der Seite in der roten Schrift aus)
Code:
<?php

    //Asking for NULL because at the very first time there is no cookie!

    if($_COOKIE['limitedProduct'] == NULL) {
        echo "<p style='text-align: center; color: red;'><strong>Der Kurs ist stark limitiert - Nur noch 31 verfügbar!</strong></p><br> " . var_export($_COOKIE['limitedProduct']);    
    }else if ($_COOKIE['limitedProduct'] > 2) {
        echo "<p style='text-align: center; color: red;'><strong>Der Kurs ist stark limitiert - Nur noch " . $_COOKIE['limitedProduct'] . " verfügbar!</strong></p>";
    }else if($_COOKIE['limitedProduct'] < 2){
        echo "<p style='text-align: center; color: red;'><strong>Der Kurs ist stark limitiert - Nur noch 2 verfügbar!</strong></p>";
    }

?>

Würde mich sehr über Hilfe freuen!
MfG und Danke!
 
Das Cookie fuer limitedProduct wird bei mir in Firefox und Chrome nicht gesetzt. Also stimmt da schon etwas nicht.
 
Ich habe das mittlerweile umgeschrieben, da ich eine Lösung wollte. Ich erstelle nun einen Random String, wandel den in einen MD5 Hash um und setzte den. Dann speichere ich den Hash mit einer Zahl in der DB und lese jedes mal den Cookie aus, schau in der DB ob ein Wert in der DB ist und wenn ja, wird der angezeigt und verringert. Ansonsten wird er gesetzt.

Das Problem jetzt. Funktioniert leider immer noch nicht. Kannst du dir ja nochmal anschauen :)
Ich habe mich für die Methode entschieden, da die modernen Browser es nicht mehr gestatten, Werte von Cookies zu ändern, was ich ja vorher gemacht habe...

MfG
 
Nur weil Du andere Werte setzt löst das ja das ursächliche Problem nicht. Hast Du in PHP Warnings und Errors eingeschaltet? Ich vermute PHP gibt auch eine Warnung a la Headers already sent oder sowas aus, es darf nichts an den Browser gesendet werden auch kein Leerzeichen oder sowas (ein Zeilenumbruch vorm öffnenden PHP Tag reicht auch), dann kann kein Cookie mehr gesetzt werden.

Aber mit Fehlern oder Logs würde man besser helfen können, wenn es die nicht gibt, musst Du Deinen Code debuggen.
 
Habe genau das selbe nun mit JS realisiert. Funktioniert damit einwandfrei!
 
Zurück
Oben