Sessioncookies
kölir
- php
Hallo,
ich dachte immer falls kein session_cookie verwendet werden kann, weicht php automatisch auf GET-Parameter um. Nun habe ich aber irgendwo gelesen, dass genau dies eben nicht funktioniert. Weicht php automatisch auf GET-Parameter um?
Gruß
P.S.: Wie kann ich am einfachsten prüfen, ob Cookies erlaubt sind?
Für deine Zwecke mit der Konstanten SID.
Hello,
ich dachte immer falls kein session_cookie verwendet werden kann, weicht php automatisch auf GET-Parameter um. Nun habe ich aber irgendwo gelesen, dass genau dies eben nicht funktioniert. Weicht php automatisch auf GET-Parameter um?
Igendwo ist schlecht.
Besser ist http://www.php.net/manual/en/ref.session.php
Sessions über die URi zu vermitteln ist aber wesentlicher schlechter, als im HTTP-Header für Cookies oder sonstige Parameter.
URIs werden schon lange logged, demnächst wahrscheinlich sogar per Gesetz
HTTP-Header nur von Kriminellen (zumindest bis "Schäuble 1.0" greift)
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hello,
Hello,
ich dachte immer falls kein session_cookie verwendet werden kann, weicht php automatisch auf GET-Parameter um. Nun habe ich aber irgendwo gelesen, dass genau dies eben nicht funktioniert. Weicht php automatisch auf GET-Parameter um?
Igendwo ist schlecht.
Besser ist http://www.php.net/manual/en/ref.session.phpSessions über die URi zu vermitteln ist aber wesentlicher schlechter, als im HTTP-Header für Cookies oder sonstige Parameter.
URIs werden schon lange logged, demnächst wahrscheinlich sogar per Gesetz
HTTP-Header nur von Kriminellen (zumindest bis "Schäuble 1.0" greift)Harzliche Grüße vom Berg
http://www.annerschbarrich.deTom
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hallo,
also irgendwie raff ich nichts.
Wie soll ich die sessionid jetztz wo mitsenden? cookie-header?
Wie realisiert man ein LoginSystem ohne session, für user, die session abgestellt haben?
Und wie speichert man usereinstellungen langfristig ohne cookie?
Gruß
Hello,
Wie realisiert man ein LoginSystem ohne session, für user, die session abgestellt haben?
Und wie speichert man usereinstellungen langfristig ohne cookie?
Die Frage ist falsch, da kann man dann auch keine richtige Antwort drauf geben.
Ich versuch mal, es geradezurücken:
Die User haben an ihrem Client nicht "Session" abgestellt, sondern nehmen keine Cookies an, obwohl das heutzutage vollkommen ok ist, mit Ausnehme des Trackings natürlich. Aber dafür bieten die Browser an, nur von bestimmten Domains Cookies anzunehmen.
Ohne Session kann man kein "Login" bauen. Irgendwie müssen die Daten auf dem Server dem Client zugeordnet werden können. Man kann allerdings die Daten immer zwischen Server und Client hin und herschicken. Dann kann der Client (meistens) daran beliebig manipulieren. Man muss also bei jedem Request alle Stufen der Prüfung wieder neu machen.
Man kann eine Session mit geschenküblichen Browsern aber nicht nur auf Cookies aufbauen, sondern auch auf Paramtern in der URi (mMn untauglich und tunlichst zu unterlassen) oder auf den AUTH-Kriterien für das klassische Basic-Auth-Verfahren.
Das haben die wenigsten Clients ausgeschaltet.
Das funktioniert ganz erstklassig, ist nur ein wenig komplizierter in der Umsetzung mit PHP, weil immer noch ein paar praktische Funktionen fehlen in PHP und man sich die Session-Datei daher selber bauen muss. Die ist dann leider im Speicherformat nicht kompatibel mit der automatisch erzeugten Sessiondatei von PHP.
Mit ein wenig Tricksen kann man den PHP-eigenen Sessionmechanismus allerdings auch an das Basic-Auth ankoppeln.
Schau Dir mal an, was passiert, wenn Du beim session_start($session_id) eine ID übergibst.
http://www.php.net/manual/en/function.session-start.php
Dann musst Du dir diese Session-ID nur merken für den User-Account. Das machst Du am besten in einer DB. An die DB lässt Du den User nur heran, wenn er sich mittels
<?php
if(!isset($_SERVER["PHP_AUTH_USER"]) or !isset($_SERVER["PHP_AUTH_PW"]))
{
Header("WWW-Authenticate: Basic realm="My Realm"");
Header("HTTP/1.0 401 Unauthorized");
echo "Text, der gesendet wird, wenn der Benutzer abbricht.<br />".
"Das sollte eine vollständige HTML Seite sein.\n<br>";
exit;
}
else
{
echo "Hello ".$_SERVER["PHP_AUTH_USER"]."<P>";
echo "Du hast <b>".$_SERVER["PHP_AUTH_PW"]."</b> als Passwort eingegeben.<P>";
}
?>
authentifiziert hat.
Das funktioniert aber nur dann auf diese Weise, wenn PHP im Apachen als Modul läuft.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom