Session problem - Hilfe!
Dirk
- php
0 Tobias Kloth0 Dirk
0 wahsaga0 Chris (C)
Hallo,
es geht um ein Skript, welches nur nach einem erfolgreichen Login dargestellt werden soll. Dazu habe ich ein Login geschrieben, welches die Benutzerdaten vergleicht und wenn die gleich sind wird eine Session-Variable gesetzt und auf das entsprechende Skript eine Umleitung gemacht. Das mache ich so :
if ($Passwortok AND $Passwortok == 1) {
session_register('loginstatus');
$_SESSION['loginstatus'] = 1;
echo "<meta http-equiv=refresh content='1;url=http://localhost/da/design/seminarmanager.php'>";
}
In dem Seminarmanager.php Skript frage ich dann zu Anfang so ab ob die Variable gesetzt ist :
session_start();
if($_SESSION['loginstatus'] != 1)
{
session_destroy();
die("Session ungültig");
}
Das klappt auf meinem lokalen PC super. Nun habe ich das Skript so auf einen Server mit folgenden Versionen geladen :
PHP 4.0.6
Apache 1.3.19
Mysql 3.23.37
Und es geht nicht!!! Der Loginstatus hat nicht den Wert 1 im seminarmanager.php. Wo liegt das Problem? Es ist fast dringend. Ich habe zwei mini-Skripte geschrieben die sehen so aus :
Skript 1 :
<?
session_start();
session_register('fg');
$_SESSION['fg'] = 3;
?>
Skript 2 :
<?
session_start();
echo "Hier ist die Variable : " . $_SESSION['fg'];
?>
Auch das geht schon nicht. Woran liegst?
Danke
Dirk
Hallo Dirk,
$_SESSION['loginstatus'] = 1;
[...]
PHP 4.0.6
in der Version gibt es $_SESSION[] noch nicht - du müsstest afaik $HTTP_SESSION_VARS[] verwenden - ich würde dir aber raten eine neue Version von php zu installieren.
Grüße aus Nürnberg
Tobias
Hallo Tobias,
erst mal danke für deine Antwort aber das habe ich schon getestet. Aber leider geht das nicht. Hast du ne andere Idee?
MFG dirk
hi,
nicht zum problem, aber
if ($Passwortok AND $Passwortok == 1) {
was soll das denn sein?
du meinst bei der ersten bedingung doch wahrscheinlich eher is_set($Passwortok)?
gruss,
wahsaga
Hallo Selferaußen,
vielleicht hilft Dir ein wenig Senf der Marke "pauschale Antwort":
Wenn Du eine Session eröffnest, wird diese für eine bestimmte Domain und in der Domain für ein bestimmtes Startverzeichnis gesetzt. Der Sessionkey (Cookie) wierd dann für alle Requests unterhalb des Startverzeichnisses mitgesandt.
Die meisten Browser können damit umgehen. Der IE 6.x hat allerdings irgendwelche Probleme. Ich habe die Lösung aber auch noch nicht rausbekommen. Habe da schon länger einen Alarmanruf von meinem Co liegen.
Also deshalb Grundregel: Die Umleitung muss unbedingt unterhalb des Startverzeichnisses für die Session und selbstverständlich in der selben Domain liegen. Der IE6.x nimmt da sogar den Gerätenamen übel, der nach Konvention durch
.domainname.tld
wegrationlaisiert werden kann.
Workaround: zwei Cookies setzen lassen. Ist aber eigentlich nur Opium gegen die Schmerzen *k... würg*
Liebe Grüße
Chris (C)