Session-ID bei erstem Aufruf nicht an URLs anhängen
der.kaefer
- php
0 Cheatah0 dedlfix0 Tom0 der.kaefer0 Tom0 Ingo Turski
Hallo zusammen,
ich habe folgendes Problem und noch keine rechte Lösung gefunden:
Auf den Seiten meines Webprojekts wird zunächst eine Session gestartet. Werden keine Cookies akzeptiert, wird die Session-ID an die URL angehangen. Dummerweise passiert dies beim ersten Seitenaufruf aber auch bei Benutzern, die Cookies annehmen (die Konstante SID ja gesetzt ist), da nicht geprüft werden kann, ob das Cookie angenommen wurde oder nicht.
Ich kann mir nicht vorstellen, dass es hierzu keine Lösung geben soll (bei anderen Seiten scheint das ja auch zu klappen...), allerdings fällt sie mir im Moment nicht ein.
Könnt Ihr weiterhelfen?
Hi,
Auf den Seiten meines Webprojekts wird zunächst eine Session gestartet. Werden keine Cookies akzeptiert, wird die Session-ID an die URL angehangen. Dummerweise passiert dies beim ersten Seitenaufruf aber auch bei Benutzern, die Cookies annehmen (die Konstante SID ja gesetzt ist),
nein. Die Konstante SID *wird* beim *nächsten* Request gesetzt *sein*. Beim ersten Response ist noch absolut unbekannt, was der Client anschließend für Daten senden wird; die einzig logische Alternative ist, zunächst beide Wege zu fahren.
Ich kann mir nicht vorstellen, dass es hierzu keine Lösung geben soll
Schlage eine vor, die ohne Cookies funktioniert - denn genau das ist der Fall, der beim ersten Request vorliegt.
Cheatah
Hi,
Auf den Seiten meines Webprojekts wird zunächst eine Session gestartet. Werden keine Cookies akzeptiert, wird die Session-ID an die URL angehangen. Dummerweise passiert dies beim ersten Seitenaufruf aber auch bei Benutzern, die Cookies annehmen (die Konstante SID ja gesetzt ist),
nein. Die Konstante SID *wird* beim *nächsten* Request gesetzt *sein*. Beim ersten Response ist noch absolut unbekannt, was der Client anschließend für Daten senden wird; die einzig logische Alternative ist, zunächst beide Wege zu fahren.
Ich dachte, SID wird von session_etart belegt, wenn kein dem Namen der Session-ID entsprechender Cookie gesendet würde. Scheint zumindest bei mir so zu sein.
Ich kann mir nicht vorstellen, dass es hierzu keine Lösung geben soll
Schlage eine vor, die ohne Cookies funktioniert - denn genau das ist der Fall, der beim ersten Request vorliegt.
Das war mir schön klar. Deshalb ja auch meine Frage...
Cheatah
echo $begrüßung;
Auf den Seiten meines Webprojekts wird zunächst eine Session gestartet. Werden keine Cookies akzeptiert, wird die Session-ID an die URL angehangen. Dummerweise passiert dies beim ersten Seitenaufruf aber auch bei Benutzern, die Cookies annehmen (die Konstante SID ja gesetzt ist), da nicht geprüft werden kann, ob das Cookie angenommen wurde oder nicht.
Ich kann mir nicht vorstellen, dass es hierzu keine Lösung geben soll (bei anderen Seiten scheint das ja auch zu klappen...), allerdings fällt sie mir im Moment nicht ein.
Welche Möglichkeiten bleiben dir denn, wenn du nicht auf Cookie-Zwang setzen möchtest? Du sendest dem Client einen Cookie. Der akzeptiert den nicht. Wie willst du dann den Client wiedererkennen, wenn er nicht auf anderem Weg eine Identifikation mitsendet, die du ihm vorher hast zukommen lassen? Wenn dir dazu ein passabler Weg einfällt, dann implementiere ihn. Es gibt drei Möglichkeiten, Daten von einem Client an den Server zu senden: URL, POST-Werte bzw. Request-Body und Cookies. Bring den Client dazu, dir einen Request zu senden, bei dem er per Cookie und eine der beiden anderen Arten eine Identifikation mitsendet. Anhand des Kekses (oder auch nicht) weißt du dann, anhand des anderen Wertes, dass dieser Client keinen URL-Parameter braucht oder auch doch.
echo "$verabschiedung $name";
Hello,
Könnt Ihr weiterhelfen?
Vielleicht meintest Du einfach nur, wie man die "Trans-SID" (transiente Session ID) abschaltet?
PHP bietet inzwischen ein ganzes Kapitel für Sessions an:
http://de3.php.net/manual/en/session.configuration.php
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
Vielleicht meintest Du einfach nur, wie man die "Trans-SID" (transiente Session ID) abschaltet?
PHP bietet inzwischen ein ganzes Kapitel für Sessions an:
http://de3.php.net/manual/en/session.configuration.php
Nein, diese Funktion möchte ist soweit ich nicht ausschalten.
Um auch Besuchern, die keine Cookies akzeptieren, eine Session zuzuordnen, muss die Session-ID ja in der URL übergeben werden. Mein Problem ist nun, dass, auch wenn der Besucher Cookies zulässt, das Skript das zunächst ja nicht mitbekommt.
start_session() ist es beim ersten Aufrufen egal, ob er das tut oder nicht: da kein zum Namen der Session-ID passender Cookie geliefert wird (wurde ja gerade erst gesetzt), wird die Konstante SID belegt und das Skript kann nicht unterscheiden, ob Cookies akzeptiert werden oder nicht, was im Endeffekt dazu führt, dass bei erstmaligem Besuch auch den Besuchern die SID an die Links gehangen wird, bei denen das eigentlich nicht nötig wäre, da diese ja via Cookie übergeben wird, was dann leider auch in Suchmaschineneinträgen auftaucht.
Ich muss mich für den langen letzten Satz entschuldigen und hoffe, dass er trotzdem verständlich ist.
Der Käfer
Hello,
dann kannst Du das nur durch Vorschaltung einer Prüfung testen und musst dich in dieser darauf verlassen, dass der Client redirects unterstützt. Es wäre zwar ungewöhnlich, wenn einer das nicht tut, aber nicht ausgeschlossen.
Ich habe mir ein System gebastelt, wo entweder eine Session per Cookie gestartet wird oder alternativ per Basic Authentication. Damit kann man dem User auch glaklar machen (durch entsprechenden Hinweis), dass er ab diesem Zeitpunkt tracked und logged wird. Session-IDs an oder in URis kommen aber nicht vor.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
Hi,
da kein zum Namen der Session-ID passender Cookie geliefert wird (wurde ja gerade erst gesetzt), wird die Konstante SID belegt und das Skript kann nicht unterscheiden, ob Cookies akzeptiert werden oder nicht, was im Endeffekt dazu führt, dass bei erstmaligem Besuch auch den Besuchern die SID an die Links gehangen wird, bei denen das eigentlich nicht nötig wäre, da diese ja via Cookie übergeben wird, was dann leider auch in Suchmaschineneinträgen auftaucht.
Bei den Suchmaschinen bekommst Du die ID nur raus, wenn Du die Aufrufe z.B. mit einer Liste der Suchmaschinen-IPs vergleichst.
Bei Besuchern kannst Du das nicht sinnvoll lösen; Du müsstest schon einen Redirect auf eine zweite Seite machen.
freundliche Grüße
Ingo