Cookie speichern funktioniert nicht mit Advanced Mod Rewrite

Gesperrt
luuuki
Beiträge: 16
Registriert: Mo 20. Jul 2009, 14:14
Kontaktdaten:

Cookie speichern funktioniert nicht mit Advanced Mod Rewrite

Beitrag von luuuki » Sa 25. Jul 2009, 10:37

Hallo allerseits,

bei mir läuft das Plugin AMR ohne Probleme. In die Website habe ich jedoch einen Styleswitcher welcher mit Cookies arbeitet integriert und dieser funktioniert mit angeschaltetem AMR nicht mehr. Der Styleswitcher ermöglicht einen Wechsel des Layouts in drei verschiedene Farbthemen.

Konkret:

Auf der Introseite habe ich drei Links welche alle drei auf die gleiche php Datei (styleswitcher.php) mit der GET-Variable "style" aufrufen, jedoch unterschiedliche Werte für die GET-Varbiable haben.

Code: Alles auswählen

<a id="klingel1" class="swButton" href="style-switcherHome.php?style=weiss"></a>
In dieser php Datei wird die GET-Variable ausgelesen, als cookie abgespeichert und dann auf die Startseite weitergeleitet.

Code: Alles auswählen

<?php
	$style = $_GET['style'];
	setcookie("style", $style, time()+604800);

	header("Status: 301"); # 301 Moved Permanently
        // folgende zeile als weiterleitung mit AMR eingeschaltet
        header("Location: http://{$_SERVER['SERVER_NAME']}/portrait");
        // folgende Zeile als weiterleitung mit AMR ausgeschaltet
	// header("Location: http://subdomain.domain.de/cms/front_content.php?idcat=2");
?>
Ich habe drei verschiedene CSS Dateien und kann bei der Einbindung im HTML über die $_COOKIE['style'] diejenige einbinden für welche das cookie gesetzt ist.

Code: Alles auswählen

<link id="stylesheet" type="text/css" href="css/base_<?php echo $_COOKIE['style'] ?>.css" rel="stylesheet" />
Diese Methode funktioniert wunderbar solalange ich kein AMR verwende. Schalte ich AMR an, existiert die Variable $_COOKIE['style'] leer. Die GET 'style' ist in der styleswitcher.php noch auszulesen, die funktion setcookie("style", $style, time()+604800); liefert auch true zurück, jedoch ist dann auf der Home Seite bei der Einbindung der CSS Datei die $_COOKIE undefiniert.

Kann es sein das die .htaccess dies verbietet ? Muss ich dieses cookie explizit zulassen oder woran kann es liegen ?

Vielen dank für die hIlfe im voraus, und jeden Hinweis, ich weiß nicht mehr weiter.

viele gr
luki

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Re: Cookie speichern funktioniert nicht mit Advanced Mod Rewrite

Beitrag von Dodger77 » Sa 25. Jul 2009, 11:20

Doppelposts sind böse. :wink: Deshalb drüben gelöscht.

Am besten schaust du dir mal genau an, wie der Cookie gesetzt wird. Angaben dazu findet man z.B. im Firefox unter "Extras -> Seiteninformationen -> SIcherheit -> Cookies anzeigen". Dann hilft es wahrscheinlich, Einstellungen zu "path" und "domain" beim setcookie()-Aufruf anzugeben:

http://php.net/manual/de/function.setcookie.php

z.B. so in der Art (ungetestet)

Code: Alles auswählen

setcookie("style", $style, time()+604800, '/', $cfgClient[$client]['path']['htmlpath']);

luuuki
Beiträge: 16
Registriert: Mo 20. Jul 2009, 14:14
Kontaktdaten:

Re: Cookie speichern funktioniert nicht mit Advanced Mod Rewrite

Beitrag von luuuki » Mo 27. Jul 2009, 11:25

Dodger 77... du bist ein Genie !!! Dein Tip mit dem Codesnippet "z.B. so in der Art (ungetestet)" hat auf Anhieb funktioniert. "path" und "domain" beim setcookie() Aufruf angeben das wars.

Danke auch das du gleich ein Beispiel dazugenommen hast, denn auf die Variable $cfgClient[$client]['path']['htmlpath'] wäre ich auch selber nicht so leicht gekommen. Oftmals findet man in Foren immer nur so allgemeine halbe Sätze, die einem Anfänger nicht weiterhelfen.

tausend Dank und viele Gr,
luuuki

p.s.: doppelposts kommen nicht wieder vor. wusste bloß nicht ob ich an der richtigen Stelle bin

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Re: Cookie speichern funktioniert nicht mit Advanced Mod Rewrite

Beitrag von Dodger77 » Mo 27. Jul 2009, 11:30

Gerne. Fast schon schade, dass es gleich funktioniert hat. So wegen des Lerneffekts. :wink:

Man hätte natürlich auch erstmal mit einer allgemeineren URL-Angabe anfangen können. Aber gleich die Systemvariable $cfgClient zu benutzen macht es halt übertragbar auf andere Projekte. Siehe dazu auch das Wiki:

http://www.contenido-wiki.org/wiki/inde ... 4cfgClient

Gesperrt