Problem mit Internet-Explorer (Session)

  • Themenstarter Themenstarter Bernie33
  • Beginndatum Beginndatum
B

Bernie33

Hallo,

Hab ein "kleines" Problem mit dem Internet Explorere. Jeder Browser spielt mit, aber der IE natürlich mal wieder nicht :mad:

Bei den anderen Browsern (Mozilla Firefox und Opera) funktionierts. Da erstelle ich einfach die Session in der Login-Datei und leite dann auf die Startseite weiter. Die sind nicht so blöd und erstellen wieder eine neue Session.
 
Zuletzt bearbeitet von einem Moderator:
Hallo mache die Weiterleitung mal mit der header Funktion und nicht javascript. Oder du setzt einen Cookie und fragst den ab.

PHP:
//[...] (Ein paar Abfragen, ob sich der Benutzer einloggen darf)

else
            {
                session_start();
                $_SESSION['Username'] = $Username;
                header("Location: /index.php?".htmlspecialchars(SID) );
                //echo "<script>document.location=\"index.php?" .  htmlspecialchars(SID) . "\"</script>";
            
            }
//[...] und da unten noch ein paar unwichtige Sachen

Gruss
 
Wenn man sich einloggt wird automatisch wieder auf die Startseite weitergeleitet. Erst dann wird eine Session erstellt. Alles gut soweit. Wenn man aber jetzt auf einen Link klickt (z. B. Memberbereich), dann wird wieder eine neue Session erstellt, was zur Folge hat, dass der Benutzer natürlich nicht mit der neuen Session eingeloggt ist und nicht surfen kann

Brauche dann mal mehr Code um zu sehen wo du überall eine session startest.
 
Hi, versuche mal auf jeder Seite für den IE noch folgenden Header mitzuschicken:
PHP:
header('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"');
 
Weiß nicht genau, ist wie mit Kononen auf Spatzen schiessen, damit umgehst du die Sicherheitseinstellungen vom IE. Wie oft wird denn die Session im selben Script gestartet? Glaube da liegt eher dein Problem.
 
Zeige mal den Teil wo du die Session in der index.php neu setzt. Also wenn du in der index.php schon eine Session erstellt hast, mußt du sie auch explizit nehmen. Die Übergabe in der Url kannst du dir sparen, da Php die Session ID standardmäßig mitgibt.
 
Also trans-sid muss aktiviert sein, dann kannst du dir die Übergabe sparen. Hier mal ein Beispiel für dein Problem, was funktioniert.

index.php
PHP:
<?php
echo 'Willkommen auf Seite 1';

echo '<br /><a href="seite2.php">Seite 2</a>';
echo '<br /><a href="seite3.php">Seite 3</a>';
?>

Seite 2

PHP:
<?php //seite2.php

if($_REQUEST['action'] == 1){
   header("Location: /index.php");
}
session_start();
$_SESSION['user'] = 'max';
$_SESSION['pass'] = 'passwort';

echo 'Willkommen auf Seite 2<br />';

echo $_SESSION['user'];  // max
echo '<br />';
echo $_SESSION['pass'];   // passwort

echo '<br /><a href="seite2.php?action=1">Seite 1</a>';
?>

Seite 3

PHP:
<?php //seite3.php

if($_REQUEST['action'] == 1){
   header("Location: /index.php");
}

session_start();

echo 'Willkommen auf Seite 3<br />';

echo $_SESSION['user'];  // max
echo '<br />';
echo $_SESSION['pass'];   // passwort

echo '<br /><a href="seite3.php?action=1">Seite 1</a>';
?>
 
Mußt du ja auch nicht, sondern nehme dann bei seite3.php die übergebene SID. Rufe mal phpinfo(); und suche nach session.use_trans_sid, bin mir sicher das es aktiviert ist. Oder probiere das mal aus, s.o..

index.php
PHP:
<?php
echo 'Willkommen auf Seite 1';

echo '<br /><a href="seite2.php">Seite 2</a>';
echo '<br /><a href="seite3.php?SID='.$_REQUEST['SID'].'">Seite 3</a>';
?>

PHP:
<?php //seite2.php

if($_REQUEST['action'] == 1){   
   header("Location: /index.php?SID=".$_REQUEST['SID']);
}
session_start();
$_SESSION['user'] = 'max';
$_SESSION['pass'] = 'passwort';
$session_id = session_id();

echo 'Willkommen auf Seite 2<br />';

echo $_SESSION['user'];  // max
echo '<br />';
echo $_SESSION['pass'];   // passwort
echo '<br />';

echo '<br /><a href="seite2.php?action=1&SID='.$session_id.'">Seite 1</a>';
?>
 
Zuletzt bearbeitet von einem Moderator:
Hallo siehe Änderung vom letzten Post, du mußt nur die jeweiligen Stellen in deinen Script ändern.

Gruss
 
Zurück