PHP SetCookie

Hallo zusammen.

Ich hab vor ca. 2 Monaten auf meiner Seite einen CSS-Styleswitcher eingebaut, dieser Styleswitcher setzt ein cookie und zwar so:

 if(isset($\_POST["chooseStyle"])) {
 $style="../css/style".$\_POST["chooseStyle"].".css";
 setcookie('style', $style, time()+365\*24\*3600, "/");
 } elseif(isset($\_COOKIE['style'])) {
 $style=$\_COOKIE['style'];
 } else { $style="../css/style.css";}

jetzt habe ich aber das problem, dass ich die ordner-struktur geändert habe und immer noch das alte Cookie verwendet wird, sprich, dass wo in 365 Tagen verfällt…

Wie kann ich dieses Cookie bzw. alle cookies auf meinem server löschen, damit die pfade / pfade in cookies neu gesetzt werden??

Danke und schönen Tag.
Sebastian

Hallo,

Hallo zusammen.

Ich hab vor ca. 2 Monaten auf meiner Seite einen
CSS-Styleswitcher eingebaut, dieser Styleswitcher setzt ein
cookie und zwar so:
if(isset($_POST[„chooseStyle“])) {
$style="…/css/style".$_POST[„chooseStyle“].".css";

Kleine Nebenbemerkung: Bitte vorher $_POST[„chooseStyle“] auf gültige Werte prüfen.

$style=$_COOKIE[‚style‘];

Kann ganz Böse sein… wenn man das Cookie passend ändert, kann man jede beliebige Datei da einbinden, zumindest wenn du die CSS Datei direkt einbaust, und nicht per verlinkst… siehe [FAQ:2435]

jetzt habe ich aber das problem, dass ich die ordner-struktur
geändert habe und immer noch das alte Cookie verwendet wird,
sprich, dass wo in 365 Tagen verfällt…

Wie kann ich dieses Cookie bzw. alle cookies auf meinem server
löschen, damit die pfade / pfade in cookies neu gesetzt
werden??

Gar nicht, weil das Cookie nicht auf dem Server, sondern im Browser des Clients gespeichert wird. Um die neu zu setzen, kannst du die einfach überschreiben:

$mapping=Array('../css/style1.css'=\>'neu1.css', '../css/style2.css'=\>'neu2.css');
foreach($mapping as $alt =\> $neu)
 if ($\_COOKIE['style']==$alt) {
 setcookie('style',$neu, time()+365\*24\*3600, "/");
 $\_COOKIE['style']=$neu; //nur für diesen Aufruf schonmal auf gültigen Wert setzen
 }

//... Rest des Scriptes

Nebenbei: es wäre besser, wenn du im Cookie nur die Auswahl / Nummer speicherst und den Pfad dann hinterher im Script zusammensetzt, also $style = „…/css/style“.preg_replace("/[^0-9]/", „“, $_COOKIE[„style“]).".css";

(das preg_replace wirft alles außer 0-9 aus dem Cookie raus, müsstest du ggfs. anpassen, wenn du andere Indexe verwendest).

Alex

danke… dir hat alles einwandfrei geklappt…

schönen tag und bis dahin.
sebastian