Sven Rautenberg: Sicherstellen, dass Cookies akzeptiert werden

Beitrag lesen

Moin!

<?

if(!isset($_COOKIE["cookietest"])) {
    if($_GET["cookiecount"] < 2) {
        setCookie("cookietest","1");
        header("Location: ?cookiecount=" . (@(int)$_GET["cookiecount"] + 1));
    }else{
        header("Location: nocookies.php");
    }
}
?>


>   
> so würde ichs machen.  
  
Vom Funktionsprinzip OK, aber @-Zeichen zur Fehlerunterdrückung haben in PHP-Code nix verloren.  
  
Details:  
  
1\. Der Shop wird eine PHP-Session benutzen, also sollte man anstatt irgendeines "Cookietest" genannten Cookies direkt den benutzten PHP-Session-Namen testen. Mehr als ein Cookie benötigt man ja nicht, allein schon um den Traffic zu minimieren.  
  
2\. Redirect-URLs im Location-Header müssen immer absolut sein, also inkl. Protokoll, Domain und Pfad.  
  
3\. Auch wenn das Casten in einen Integer für den Counter im Kontext der URL korrekte Ergebnisse erzielt, ist mir bei sowas doch wohler, wenn alles, was in die URL wandert, via rawurlencode() escaped wird.  
  
4\. Dein Code produziert trotzdem eine Notice wegen $\_GET['cookiecount']...  
  
  
 - Sven Rautenberg