PHPSID an URL -> URL im Counter
Andavos
- php
0 Tom
Hallo,
Also ich habe einen Session Code (Adminmenü) auf meinem Server laufen.
Leider Akzeptier der Server nicht Cookies (ka warum :( ) also hängt er Automatisch die Session ID an die URL dran, ca so:
http://www.rpgcommunity.de/clanwissen/admin.php?was=admin&PHPSESSID=f0f4476959eba8b9a9aab668000b694d
Wenn ich jetzt aus dem Admin Menü rausgehe und kein Logout gemacht habe, so bleibt die Session ID an der URL "hängen".
Problem ist bloß: Ich habe Logfiles (für jeden einsehbar) und dort steht dann: http://www.rpgcommunity.de/clanwissen/admin.php?was=admin&PHPSESSID=f0f4476959eba8b9a9aab668000b694d
Also könnte die Person ohne Problem in Admin Menü, was nicht der sinn der Sache wäre.
Wie kann ich diese PHPSESSID von bestimmten Seiten entfernen lassen, damit es nich in den Logfiles erscheint.
(Die Seiten wo ich die ID brauche, die werden nicht gelogt)
Klar wäre es am leichtesten Cookies zu akzeptieren, aber ihr kennt die Provider ... ;)
MFG
Andavos
Hello,
Leider Akzeptier der Server nicht Cookies (ka warum :( ) also hängt er Automatisch die Session ID an die URL dran, ca so:
Dass ein HTTP-Server keine Cookies akzeptiert, habe ich noch nie gehört. Allerdings lerne ich immer gerne dazu ;-)
1. Der Client entscheidet, ob Cookies akzeptiert werden
2. Der Server entscheidet, ob Cookies gesetzt werden
3. Schau Dir mit Hilfe von phpinfo() Die Systemeinstellungen an
<?php
phpinfo();
?>
Das hatte ich Dir aber schon einmal geraten!
Am Besten, Du postest mal den ganzen Session-Block. So groß ist der ja nicht.
session.auto_start Off Off
session.bug_compat_42 On On
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_dividend 100 100
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path /tmp /tmp
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid Off Off
So sieht der z.B. aus
Dann kann man mehr dazu sagen.
4. Man sollte generell aus dem Dir ja nun bekannten Gründen das Vermischen von Zugriffsrechten und Session-Identifikation vermeiden.
Und TRANS_SID ist keine akzeptable Methode. Stell Dir mal vor, du versendest eine Webseite per eMail...
Wenn Der Client keine Cookies unterstützt, dann muss man den Session-Mechanismus eben selber aufbauen und Auth401 verwenden.
Grüße
Tom
Hallo,
die PHP Info siehst du hier:
http://www.rpgcommunity.de/phpinfo.php
session.use_cookies On On
session.use_only_cookies Off Off
Es scheint als ob die der Server Cookies Akzeptier, aber warum hängt er die PHPSID dann an die URL dran, und voallem, wie bekomme ich die auf den anderen Seiten weg?
P.S. Deine Antwort hat mir nicht viel gebracht
MFG
Andavos
Hallo,
also ich hab mich da eingelogt, es geht alles Super.
Dann bin ich auf eine andere Site gegangen und dann wieder auf eine Site, die durch den Login gesichert wurde.
Ausgabe:Bitte erst einloggen.
Also hat er keinen Cookie auf den Server gesetzt, sonst hätte er mich reingelassen.
MFG
Andavos
Hello,
Also hat er keinen Cookie auf den Server gesetzt, sonst hätte er mich reingelassen.
1. Wer ist "er"?
2. Der Cookie wird nicht auf dem Server gesetzt, sondern auf dem Client. Und wenn der Client eine Seite in der selben Domain aufruft (Base-Url muss genau übereinstimmen), dann sendet er den Cookie wirder mit an den Server, der ihn dann in $_COOKIE[] zur Verfügung stellt.
Hier fliegen schon irgendwie drei kleine Testscripte zu Sessions von mir rum. Der Thread könnte schon im Archiv sein. Must Du eben mal suchen.
Die probier mal aus und gibt das Ergebnis hier bekannt.
Grüße
Tom
Hello,
Hier fliegen schon irgendwie drei kleine Testscripte zu Sessions von mir rum. Der Thread könnte schon im Archiv sein. Must Du eben mal suchen.
Die probier mal aus und gibt das Ergebnis hier bekannt.
Ich habe sie Dir ben nochmal rausgesucht: http://forum.de.selfhtml.org/archiv/2003/11/62196/#m352252
Ausprobieren musst Du nun selber.
Aber stell vorher session.use_trans_sid auf off in der ini und starte den Apachen neu.
Grüße
Tom
Hallo,
das kann ich nur offline, nicht online (Provider)
P.S. Auf meinem PC sieht das so aus:
Directive Local Value Master Value
session.auto_start Off Off
session.bug_compat_42 On On
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 100 100
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path c:\apache\tmp c:\apache\tmp
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid On On
Da läuft alles einwandfrei mit Servercookies und ohne PHPSID
MFG
Andavos
Hello,
*zisch* so ein schönes kühles Bier ist doch 'was Feines...
das kann ich nur offline, nicht online (Provider)
P.S. Auf meinem PC sieht das so aus:
local default
session.use_trans_sid On On
Na gut, dann musst Du es eben lokal ausschalten.
session.use_trans_sid "1" PHP_INI_SYSTEM|PHP_INI_PERDIR
PHP_INI_PERDIR (2):
Entry can be set in php.ini, .htaccess or httpd.conf
Kannst Du .htaccess nutzen? Dann musst Du eine Datei in das Verzeichnis stellen ab dem trans_sid ausgeschaltet werden soll.
#############################
Da müsste jetzt bitte mal jemand Anders helfen
Ich weiß die Syntax nicht, da ich's nichtbenute...
#############################
Ich meine, es müsste einfach
php_flag session.use_trans_sid off
drinstehen.
Grüße
Tom
Hallo,
ne .htaccess kann ich leider nicht usen :(
Ich hab mal folgendes Probiert:
ini_set("session.use_trans_sid", 0);
session_start();
das ging nicht :(
MFG
Andavos
Hallo,
also ich habe deine Scripte hochgeladen
http://www.rpgcommunity.de/clanwissen/session/
Dann habe ich Session_start.php aufgerufen.
An den Link hat er ?PHPSID=.... drangehängt.
Als ich F5 gedrückt habe, war es weg (kein ?PHPSID= mehr.
Dann bin ich nochmal ins Adminmenü gegangen und dort war ?PHPSID= aufeinmal nicht mehr da (an der URL ;) ).
Als ich Cookies + Cache gelöscht habe, wurde die ?PHPSID= wieder an die URL drangehängt.
Warum?
P.S. Das mit dem Cache geht mit deinen Scripts nicht immer und bei Session killen war ein fehler, da muss am ende ein ; kein . ;)
MFG
Andavos
Moin!
An den Link hat er ?PHPSID=.... drangehängt.
Bei der ersten Seite, die du von einem Skript abrufst, welches session_start() enthält, weiß dieses Skript noch nicht, ob dein Browser (oder du) das Cookie akzeptieren wirst, welches das Skript aufgrund von session_start() sendet.
Damit die Session also nicht verloren geht, sobald du die zweite Seite aufrufst, muß die Session-ID in jedem Fall an alle Links und in alle Formulare geschrieben werden. Mit trans_sid-Option geht das automatisch, aber es ist nicht unbedingt schön. Und es funktioniert bei gewissen anderen Mechanismen (z.B. Javascript) auch nicht.
Als ich F5 gedrückt habe, war es weg (kein ?PHPSID= mehr.
Wenn die zweite Seite geladen wird, schickt der Browser das gesetzte Cookie mit, sofern es tatsächlich gesetzt wurde. Das erkennt PHP und verzichtet künftig auf die Session-URL-Geschichte, sondern verläßt sich nur noch auf das Cookie. Dagegen ist im Prinzip nichts einzuwenden, das ist die beste Lösung.
Dann bin ich nochmal ins Adminmenü gegangen und dort war ?PHPSID= aufeinmal nicht mehr da (an der URL ;) ).
Logisch, weil ja jetzt der Cookie wirkt.
Als ich Cookies + Cache gelöscht habe, wurde die ?PHPSID= wieder an die URL drangehängt.
Weil der Cookie fehlte. Also ist der erneute Seitenaufruf ein "erster" Seitenaufruf im Sinne der Session. Und dir wird aufgefallen sein, dass die Session-ID gewechselt hat.
- Sven Rautenberg
Hallo,
das macht Sinn.
Ich hab versucht mit:
ini_set("session.use_trans_sid", 0);
das zu deaktiviern.
Ging aber nicht :(
Er hängt die ?PHPSID= immer noch an?
Gibt es sonst noch eine Lösung?
MFG
Andavos
Hello Andavos,
Ich hab versucht mit:
ini_set("session.use_trans_sid", 0);
das zu deaktiviern.
Ging aber nicht :(
Dass das nicht geht, hatte ich Dir schon geschrieben. Manche ini-Einstellungen kann man nicht aus dem Script heraus verändern.
Wenn Du .htaccess verwenden darfst auf Deinem Provide-Space, dann
bau Die eine .htaccess-Datei und setz mal die Zeile
php_flag session.use_trans_sid off
da rein.
Die Datei stellst Du dann in das Verzeichnis, ab dem keine Trans_SID mehr benutzt werden sollen, also wahrscheinlich direkt in die Document Root.
Wenn HT_Access für Deinen Space zugelassen ist, dann merkt der Server das sofort nachdem die Datei dort abgelegt wurde. Sie muss aber für den Apachen lesbar sein. Zum TESTEN kann man da mal Mode 0444 einstellen. Sollte aber nicht zur Gewohnheit werden.
Grüße
Tom
Hallo,
ne ich habe leider kein .htaccess, leider
MFG
Andavos
Moin!
ne ich habe leider kein .htaccess, leider
Wieso das nicht? Schon ausprobiert? Sowas ist eigentlich untypisch. Wer PHP hat, sollte auch .htaccess haben, alles andere macht nicht unbedingt viel Sinn.
Allerdings: Wenn der Provider doof ist, hat er das tatsächlich abgeschaltet.
- Sven Rautenberg
Hallo,
wenn ich eine .htacces datei hochzulade und dann eine Site aufrufe erhalte ich immer:
Internal Server Error ...
Aber kann ich bei den andern Seiten nicht einfach sagen, das er die PHPSID löscht?
MFG
Andavos
Moin!
Hallo,
wenn ich eine .htacces datei hochzulade und dann eine Site aufrufe erhalte ich immer:
Internal Server Error ...
Und was steht in der Datei drin? Kann ja sein, dass du einen Fehler eingebaut hast. Dann führt das nämlich zum beschriebenen Fehler.
Wenn .htaccess komplett abgeschaltet wäre, würde das Problem nicht auftreten, weil die Dateien dann komplett ignoriert würden (was Performance bringt, weil Apache nicht mehr im jeweiligen Verzeichnis und allen darüberliegenden Verzeichnissen nach .htaccess-Dateien Ausschau halten muß.
Aber kann ich bei den andern Seiten nicht einfach sagen, das er die PHPSID löscht?
Das funktioniert leider nicht. Entweder schaltest du trans_sid aus, oder es bleibt an. Im zweiten Fall mußt du Cookies akzeptieren, damit die URL-ID ab der zweiten Seite weg bleibt.
- Sven Rautenberg
Hallo,
Inhalt der .htaccess:
php_flag session.use_trans_sid off
So wie vorhin geschrieben.
Mit .htaccess kenn ich mich noch weniger aus als mit PHP ;)
MFG
Andavos
Hello Andavos,
Inhalt der .htaccess:
php_flag session.use_trans_sid off
echt tapfer, dass Du so lange durchhältst. Aber Du bist gleich am Ziel. Ich bin sicher, dass da nur noch was falsch ist an der Zeile in der .htaccess. Hatte ich vorhin aber auch gesagt, dass ich das nicht aus dem Kopf weiß. Lass uns doch nochmal hier im Archiv suchen, ob wir den Fehler finden.
Vielleicht unter "htaccess", "Flags" ?
Bis gleich
Tom
Hello,
habe das nun mal eben bei mir ausprobiert:
[Fri Nov 7 20:33:23 2003] [alert] [client 192.168.101.25] /home/thomas/public_html/test/Sessions/.htaccess: php_flag not al
lowed here
Ich bekomme auch fehler 500
Das ist die Fehlermeldung aus dem Error_Log
Also muss da leider auch noch eine Freigabe für die Flags in der httpd.conf stattfinden. Das ist sehr bedauerlich. Ich weiß leider nicht, wie die auszusehen hat. Außerdem kommst Du nicht heran. Das müsste Dein Provider machen. Bei wem bist Du?
Schade, sooo kurz vor dem Ziel.
Wenn nicht jetzt noch einer unserer "Server-Gurus" aus dem Forum Rat weiß...
Vielleicht ein Grund, mal den Provider zu wechseln? Was zahlst Du?
Liebe Grüße
Tom
Hallo,
echt schade, aber ich versuchs weiter das zu lösen.
Denn welche Site er (der Besucher) aufgerufen hat frag ich hiermit hab (beim Logfile (Eigenbau))
$site = $_SERVER['REQUEST_URI'];
Evt. kann ich das ja nach PHPSID untersuchen lassen und wenn dort PHPSID ist, dann kann ich das ja daraus löschen.
$a = str_replace("PHPSID", "", $site)
Oder so ähnlich, befehl muss ich morgen mal genauer nach suchen.
Mal hoffen das es klappt.
Ich bezahl für den Space nichts, das macht ein Freund von mir (5 pro Monat, 250 oder 350 MB, unendlich Traffic, MySQL, PHP)
Und danke für deine Hilfe, auch wenn das Problem noch nicht gelöst ich weiß wenigstens wodran es liegt und weiß jetzt auch wonach ich suchen muss.
Auch an Sven Rautenberg ein Dankeschön.
MFG
Andavos
Hallo Andavos,
Ich hab versucht mit:
ini_set("session.use_trans_sid", 0);
Workaround:
ini_set ("url_rewriter.tags", "");
Viele Grüße,
Christian
Hallo,
aber er (der Server/Browser) setzt doch einen Session Cookie auf den Server, und nicht auf den eigenen PC, oder?
Und im den Session Cookie ist glaub ich dann die Session ID gespeichert
MFG
Andavos
Hello,
die PHP Info siehst du hier:
http://www.rpgcommunity.de/phpinfo.php
hab sie mir angeschaut und so langsam nähern wir und einer Lösung...
session.use_trans_sid On On
Das solltest Du ausschalten, wenigstens über ini_set() innerhalb des Scriptes, _bevor_ Du Session_Start() aufrufst.
Und dann solltest Du zum Testen Deinen Client (Browser) auf "redselig" einstellen. Also Cookies nur nach Rückfrage annehmen. dann kann man nämlich auch noch sehen, was drinsteht.
P.S. Deine Antwort hat mir nicht viel gebracht
Aber Deine mir *grins*
Grüße
Tom
Hallo,
Problem:
also ich hab mich da eingelogt, es geht alles Super.
Dann bin ich auf eine andere Site gegangen und dann wieder auf eine Site, die durch den Login gesichert wurde.Ausgabe:Bitte erst einloggen.
Also hat er keinen Cookie auf den Server gesetzt, sonst hätte er mich reingelassen, oder?
Und wie mache ich das mit ini_set()
<?php
ini_set("php.ini","session.use_trans_sid 0");
?>
|Und dann solltest Du zum Testen Deinen Client (Browser auf "redselig" einstellen. Also Cookies nur nach Rückfrage annehmen.
Wäre gut wenn ich wüsste wie man das macht.
P.S. Wie du merkst hab ich nicht sooo die Ahnung ;)
MFG
Andavos
Hello,
Und wie mache ich das mit ini_set()
<?php
ini_set("php.ini","session.use_trans_sid 0");
?>
Da schau mal nach im php-manual. Ich muss eben was zu Trinken holen, sonst schlaff ich ab ;-))
|Und dann solltest Du zum Testen Deinen Client (Browser auf "redselig" einstellen. Also Cookies nur nach Rückfrage annehmen.
Wäre gut wenn ich wüsste wie man das macht.
P.S. Wie du merkst hab ich nicht sooo die Ahnung ;)
Macht nix. Nervt zwar manchmal ein bisschen, aber da müssen wir eben gemeinsam durch. Schließlich ist das Forum dafür da. Ich lern ja auch jeden Tag noch 'was dazu und die Anderen helfen.
Bis gleich
Tom
Hallo Tom,
session.use_trans_sid On On
Das solltest Du ausschalten, wenigstens über ini_set() innerhalb des Scriptes, _bevor_ Du Session_Start() aufrufst.
Schön wärs, wenns ginge...
http://bugs.php.net/bug.php?id=24693
Viele Grüße,
Christian