Hi,
Ich will gerade herausfinden, ob der Client Cookies akzeptiert oder nicht. Aber so wie es aussieht, kommt man nicht drumherum, von einer Seite aus einen neuen Request zu erzeugen (z.B. mit header("Location: http://$host$uri");), um zu prüfen, ob ein Cookie akzeptiert wurde oder nicht.
Nein, da hast du den Kern meiner Aussage nicht verstanden.
Wenn du ein mal überprüfst, ob du vom Client einen Cookie geschickt bekommst, muss das nicht heißen, dass das beim nächsten Request auch noch der Fall ist - der Benutzer kann es ja zwischendurch deaktivieren.
Zugegeben, das dürfte selten vorkommen - aber es _kann_ eben vorkommen.
Prinzipiell ist das schon verstanden mit den Cookies ansich. Setzen wir jetzt mal voraus, dass der jeweilige Client für die Dauer der Sitzung die Cookies aktiviert lässt, sofern er das Cookie am Sitzungsbeginn akzeptiert hat.
Der Cookie müsste ja erst mal zum Client gelangen, um von diesem beim _nächsten_ Request wieder mitgeliefert zu werden.
Nein. Innerhalb der mod_rewrite Umgebung existiert der Cookie ja wie eine normale Variable sobald er einmal gesetzt ist.
Ist das eine Vermutung, oder irgendwo beschrieben?
Eine Vermutung, da ich bisher nirgendwo eine definitive Aussage dazu gefunden habe.
Also müsste er auch (schon) verfügbar sein. Und zwar unabhängig davon, ob er _später_ vom Client akzeptiert wird oder nicht.
M.E. sagst du mod_rewrite, dass es in der Antwort auf den aktuellen Request einen Cookie-Header mitschicken soll.
Dass es deshalb so tut, als ob der Cookie schon mit dem aktuellen Request vom Client übermittelt worden wäre, bezweifle ich stark.
Ich meine im Archiv bei meiner Suche mal über einen Artikel gestolpert zu sein, in dem Cheatah geschrieben hat, dass ein Redirect ja wieder zum Client gesendet wird und dieser somit dann einen neuen Request sendet. Was mir ja auch logisch erscheint, weil wie soll er sonst "mitkriegen", dass sich die Adresse (die er in der Adresszeile anzeigen soll) geändert hat?
Aber irgendwie kapiere ich das scheinbar nicht!?
Ich will ja eigentlich bloß wissen, ob ich per mod_rewrite feststellen kann, ob ein Client ein gesendetes Cookie akzeptiert hat oder nicht.
[Query-String] Wenn du ihn abschneidest, sind die Daten damit verloren. Der Client schickt seinen nächsten Request ohne sie.
Hier kommen wieder die Umgebungsvariablen ins Spiel. Meine Idee war ja die, den Querystring in eine $_ENV Variable zu packen. Somit könnte ich ihn in der Adresszeile "abschneiden" _ohne_ die Werte zu verlieren. Nur leider kommen die Variablen/ -werte ja gar nicht in meiner index.php an. :-(
Die Umgebungsvariablen existieren nur so lange, wie die Abarbeitung des aktuellen Requests andauert. Lässt du durch einen Redirect einen neuen Request aus, sind sie wieder futsch.
Und wenn du keinen Redirect auslöst, brauchst du die Daten nicht in eine weitere Umgebungsvariable zu stecken - dann reicht das Flag [QSA] vollkommen aus, um sie dem per interner Umschreibung aufgerufenen Script so zur Verfügung zu stellen, als wäre es direkt mit diesem Query-String aufgerufen worden.
Das kapier ich noch weniger, als die Sache mit den Cookies. In den diversen Dokumentationen ist immer die Rede davon, dass man die Umgebungsvariablen später (also nach Abarbeitung aller Requests durch u.a. mod_rewrite) bspw. in einem CGI-Script oder SSI Dateien nutzen kann.
Kriege ich eine Variable, die ich per Flag in einer RewriteRule setze auch in meine index.php weitergereicht oder geht das nicht?
BTW: Ich habe ja durchaus vor, deinen Ratschlag bezüglich der Performance zu berücksichtigen, und die ganze Geschichte direkt in den VirtualHost Abschnitt zu packen. Aber irgendetwas läuft da anders, als wenn die Rules in der htaccess stehen.
Was sagt das Rewrite Log dazu?
Das sagt, dass ja da vorher noch das sch... Confixx mit seinen ganzen Rewrites sitzt. Also werde ich es "bequemlichkeitshalber" erstmal weiter über die .htaccess machen (wobei ich die Sache mit der Performance durchaus verstanden habe), da ich auf das Confixx nicht (oder nur sehr schwer) verzichten kann (fehlende Linux- und Serveradministrationskenntnisse).
Gruß Gunther