PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Session-Vars und neuem Fenster


DarkStar
09.03.2006, 19:05:33
Hi,
ich bin ein rechter Noob was PHP und vor allen Dingen Sessions angeht. Nun habe ich vor einiger Zeit ein für meine Verhältnisse recht ehrgeiziges Projekt angefangen.

http://www.at-dawn.de

So nun habe ich folgendes Problem. Ich öffnne mit folgendem Link ein neues Fenster per JavaScript:
<a href=\"content/print.php?sid=".$_GET["sid"]."\" target=\"print\" onclick=\"FensterOeffnen(this.href); return false\">Show Detailed-/Print-Version</a>

die FensterOeffnen() sieht so aus
function FensterOeffnen (Adresse) {
Fenster1 = window.open(Adresse, "print", "innerwidth=1200,height=700,left=0,top=0,scrollbars=yes,dependent=yes,r esizable=yes,menubar=yes");
Fenster1.focus();
}

Am Anfang der print.php (also die Datei die dann geöffnet wird) steht folgendes:
if ( !empty($_GET["sid"]) )
{
session_start();
if ( !isset($_SESSION['sess_user']) ) { session_destroy(); $logged_on = 0; } else { $logged_on = 1; }
}

Das das nicht so schön ist weiß ich, nur wie gesagt ich bin anfänger und besser hinkriegen tu ich im moment noch nicht.

So jetzt das Problem. Das ganze funktioniert im FireFox wunderbar. absolut ohne Probleme. Allerdings verliert er im IE wenn man dann die print.php mit dem JavaScript öffnet die kompletten Session-Variablen. Die Session wird gestartet (also die $_GET["sid"] wird korrekt übermittelt und kommt auch an), allerdings sind alle Daten die ich vorher gespeichert hab weg, also ist die $_SESSION["sess_user"] leer, also wird dann die session gleich wieder zerstört und man bekommt "You are not logged on". Dieser Fehelr tritt nur im IE auf, im Firefox funktionierts einwandfrei.

Auch bei allen anderen Seiten habe ich das Sessionmanagment (wenn an das überhaupt so nenne kann) so geregelt wie in der print.php, und da funktionierts sowohl im IE als auch im FF einwandfrei.

Wenn ich im IE von Hand ein neues Fenster öffne und dort dann die verknüpfung per Hand eingebe funktioniert das alles, es macht eben nur Probleme wenn ich es über das JavaScript aufrufe.

Wo liegt das Problem?

Aso wer das ganze ausprobieren will, dem hab ich auf http://www.at-dawn.de einen Testaccount eingerichtet
Username: geb
Passwort: geb

Vielen Dank

Greez Dark

DarkStar
10.03.2006, 17:33:36
ok ich hab die lösung gefunden. ich benutze standartmäßig FF, IE hab ich auch nicht mehr aufm desktop usw., deswegen starte ich, wenn ich den IE mal brauche, ihn indem ich den Windows Explorer öffne und dort dann die URL eingebe. Wenn ich dann auf den Link klicke und ein neues Fenster öffne, startet er ein neues IE Fenster, bei dem er logischerweise danna auch eine neue Session startet, die die ganzen Variablen noch nicht enthält. Ich dachte immer "ist doch egal ob ich den IE über den IE.exe starte oder über den Windows Explorer" aber ist es wohl anscheinend nicht. Wenn ich den IE ganz normal starte und dann auf den Link klicke funktioniert es genauso wie im FF einwandfrei. Wenn ich im Windows Explorer die Seite öffne, dann den Link kopiere, ein neues Windows Explorer Fenster öffne und dort den Link eingebe funktionierts auch einwandfrei.

Wenn man allerdings im Windows Explorer direkt auf den Link klickt öffnet er halt ein neues Fenster in einem "anderen" Browser und dort kennt er die Session logischerweise nicht. Ist zwar sehr seltsam von Microsoft gelöst worden, aber na gut jetzt weiß ich ja Bescheid. Vielen Dank :)