Zum Inhalt springen

Session, UserAuth und IE

Erstellt am 7. Oktober 2010 · 3 Antworten · letzte Antwort am 12. Oktober 2010

Tags: Frage

McGregor ·

Hallo!

Ich habe hier eine Download-Ext gebastelt.
Ist der User eingeloggt, darf er auf bestimmte Daten zugreifen. Das funktioniert auch wunderbar im FF aber nicht im IE und irgendwie kann ich das Problem nicht greifen :-(

Hierzu mal folgendes Schnipsel:

$get = t3lib_div::_GET('file');
$typ = t3lib_div::_GET('typ');
$content = 'Sie sind nicht richtig eingeloggt<br />und haben keinen Zugriff auf diese Datei!';
// eingeloggt?
$GLOBALS['TSFE']->fe_user->user = $GLOBALS['TSFE']->fe_user->fetchUserSession();
if (isset($GLOBALS['TSFE']->fe_user->user)) {
	if ($GLOBALS['TSFE']->fe_user->user['usergroup'] != '') {
		$gruppen = explode(',',$GLOBALS['TSFE']->fe_user->user['usergroup']);
		if (in_array('3',$gruppen) || in_array('4',$gruppen)) {
			// Mit der richtigen Gruppe eingeloggt...
[...]
}
// keine Rechte
return $this->pi_wrapInBaseClass($content);

Wenn der User sich auf der Webseite einloggt, dann kann er eine Excel-Liste runterladen (das funktioniert auch).
In der Excel-Liste sind Informationen und auch Links. Die Links zeigen auf die Domain nach dem Schema:
http://www.domain.de/start/file/pdf/hilfe/hilfe.pdf
Dann greift Mod-Rewrite ein und schreibt die Anfrage nach folgende URL um:
http://www.domain.de/index.php?id=544&file=file/pdf/hilfe/hilfe.pdf
Und auf der id 544 liegt nun mein Download-Script (s.o.)
Das überprüft, ob der User noch eingeloggt ist und bietet dann das File zum Download an.

Wie gesagt. Im FF kein Problem, aber im IE(ver.8 ) schon.
Hier verhält sich das ganze so, dass jedes 2. mal die Datei zum Download zur Verfügung steht und das andere mal ich die Meldung erhalte: "Sie sind nicht richtig einge....".
Eine Untersuchung von t3lib_userauth->fetchUserSession und t3lib_userauth->fetchUserSessionFromDB zeigte mir, dass die SQL-Where-Clause mit immer unterschiedlichen Session-IDs anfragt, obwohl in der Tabelle immer die gleiche ID steht (macht ja auch Sinn).

Und am meisten verwundert mich die Tatsache, dass das Problem nur im IE auftritt.

Habe ich bei meiner Abfrage nach dem "eingeloggt-sein" irgendetwas vergessen? Ist das Script soweit korrekt?
Irgendwelche Denkanstöße wären echt super.

Grüße
McGregor

banana ·

am php code wirds nicht liegen, eher an den übergabe werten.

hast du mal getestet ob du dich mitm IE einloggen kannst
wenn ja, könnte es am output liegen, vielleicht einen slash vergessen oder zuviel im pfad ... mir ist das mal bei bildern aufgefallen, im ff gingen sie und im ie nicht.

McGregor ·

Hi!

Ja, einloggen geht.
Wenn ich mich nicht einlogge, erhalte ich bei jedem Versuch die Meldung, dass ich nicht eingeloggt bin.
Das kann's also nicht sein.
Sicherlich liegt es nicht an php. Das widerspricht sich mit dem unterschiedlichen Browserverhalten.
Ich muss wohl weiter probieren.

Grüße

McGregor ·

Hi!

Ich habe weitere Tests durchgeführt.
Folgendes ist dabei aufgetaucht:

Wenn ich mich den Donwload mit dem FF durchführe, dann wird die Seite scheinbar 2x aufgerufen. Ich sehe das daran, dass die Session zweimal in meine Debug-Ausgabe geschrieben wird.
Beim 1. Aufruf ist die SessionID falsch (und nicht nur das, sondern auch die Kennung d. Browsers (MSIE 7.0 .NET)). Danach erfolgt automatisch ein erneuter Aufruf und der Download funktioniert (hier ist die Kennung richtigerweise: Mozilla 5.0/ FF 3.6).

Im IE wird die Seite nur 1x aufgerufen und hier sind die Kennungen jedoch identisch. Beim 1.Mal ist es die IE7.0-Kennung (mit der falschen SessionID) und beim 2. Mal die korrekte IE 8.0-Kennung (mit der korrekten SessionID) und der Donwload funktioniert.

Kann damit jemand etwas anfangen? Hat das mit Excel zu tun? Senden Excel eine Browser .NET-Kennung? Wie kann ich das umgehen?

Grüße
Deswegen funktioniert