Session - Übergabe / Verwaltung / ...?

am 10.04.2013 - 11:21 Uhr in
Hallo,
ich habe ein Problem mit Sessions.
Bisher habe ich in Drupal ein Skript per require_once eingebunden, welches eine spezielle Bilderbibliothek nachlädt. Klickt man auf ein Bild, dann wird Drupal quasi überlagert und es wird ein Vollbild angezeigt. Da dies beim Laden bedeutet, dass Drupal völlig umsonst im Hintergrund aufgebaut wird, habe ich diesen Teil ausgelagert. Jetzt aber mit dem Problem, dass die Session dabei verloren geht. Das darf aber nicht sein, weil ich Drupal für die Authentifizierung nutze und im Vollbild dann Adminfunktionen nicht mehr zur Verfügung stehen. Das Skript erlaubt es zwar auch, dass man die SID per GET übergibt, aber das möchte ich eigentlich vermeiden. Die Ladezeiten reduzieren sich aber durch Maßnahme von 1,8s auf 0,6s und das ist mir sehr wichtig.
Die Datei, die ausgelagert wurde liegt im gleichen Verzeichnis wie Drupal und wird quasi über die gleiche Domain angesprochen.
www.drupal.de/seite_mit_vielen_bildern_in_drupal >> SESS821be36b82da476a7a171fc4b887ea6f
www.drupal.de/vollbild.php?bild=2 >> SESSbilderdb
Auf beiden Seiten wird die gleiche Bilddatenbank eingebunden, weswegen es prinzipiell funktioniert. Aber die Authentifizierung, welche vom Skript in einer Session gespeichert wird, geht bei dem Übergang verloren.
Hauptproblem ist, dass eine Drupalsession einen wechselnden Namen hat, wohingegen die Bilderdatenbank im Zweifelsfall einen eigenen (stabilen) Namen verwendet. Unter php.net und im Netz habe ich nichts gefunden, wie man Sessions mit einem abweichenden Namen eine SessionId zuweisen kann. Würde es überhaupt was bringen, wenn ich die SessionId in der SESSbilderdb so manipulieren?
Im BrowserCache liegt quasi ein Cookie mit der Domain www.drupal.de und den entsprechenden Sessions. Gibt es eine Idee dazu?
- Anmelden oder Registrieren um Kommentare zu schreiben
Eventuell ein Lösungsansatz
am 10.04.2013 - 14:34 Uhr
Ich habe hier mal einen Lösungsansatz, bin mir aber nicht sicher wie blöd die Idee ist:
$ThisSession = $_SESSION;
session_write_close();
session_name('SESSbilderdb');
session_start();
$_SESSION = $ThisSession;
im initialen Skript wird einfach die aktuelle Session in die BilderDB Session geschrieben. Wenn diese dann extern darauf zugreift, dann hat sie die nötigen Infos.
Ich sehe hier zwei Probleme.
1) Drupal zerstört bei einem Logoff ja nur seine Session und nicht die bedepperte Kopie dessen. Oder irre ich mich? Somit sehe ich eine Chance, dass man den externen Skript weiter verwenden kann, auch wenn man bei Drupal schon längst ausgelogged ist. Könnte man ja abfangen.
2) In dieser Methode ist es eine Einbahnstraße. In dem Cookie auf der Festplatte haben jetzt aber beide die gleiche SessionId gespeichert und greifen damit auf den gleichen Speicher auf dem Server zu?! Damit würde eine Änderung an den Sessioninhalten ja auch auf die Drupalsession durchgehen?!