Session Problem (ich verteh es nicht)

Henselmania

Mitglied
Hallo Forum,

ich habe ein seltsames Problem, und ich verteh nicht warum er der Server sowas macht...

Ich hoffe ihr könnt mir weiterhelfen...

In der Login.php lese ich alle Daten aus der Datenbank in ein Array und weise die den Variablen SESSION zu. Siehe unten... (das funktioniert auch alles)

PHP:
session_start ();
$_SESSION["user_id"] = $row["Id"]; 
  $_SESSION["user_nickname"] = $row["Nickname"]; 
  $_SESSION["user_nachname"] = $row["Nachname"]; 
  $_SESSION["user_vorname"] = $row["Vorname"];
  $_SESSION["user_mail"] = $row["Mail"];
  $_SESSION["user_titel"] = $row["Titel"];

Die Datei die ich jetzt überall Include ist diese hier:
PHP:
session_start (); 
if (!isset ($_SESSION["user_id"])) 
{ 
 header ("Location: index.php"); 
}

Und nun zu meinem Problem...
Das Includen funktioniert bei vielen Dateien doch bei manchen auch nicht.... da will er die Variable einfach nicht ausgeben.... und ich habe keine Ahnung warum....

z.B. diese Datei hier funktioniert es ohne Probleme
PHP:
<?php
include ("../checkuser.php"); 
?>
<html>
<head>
<title>Titel</title>
</head>
<body bgcolor="#DDE7C2" border="0" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table align="center">
<tr align="center">
<td align="center"><b><?php echo $_SESSION["user_nickname"];?></b></td>
</tr>
</table>
</body>
</html>

Und bei dieser Datei nicht....
PHP:
<?php
include ("../checkuser.php"); 
?>
<html>
<head>
<title>Titel</title>
</head>
<body bgcolor="#DDE7C2" border="0" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table align="center">
<tr align="center">
<td align="center"><b><?php echo $_SESSION["user_titel"];?></b></td>
</tr>
</table>
</body>
</html>

So nun hoffe ich auf hilfe :-)
 
Kann mit keiner helfen ?

Ich verstehe eingfach nicht warum es bei der einen Seite geht und bei der anderen nicht...
da muss doch irgendwo der Fehler liegen oder ?

Falls keiner eine Lösung hat kann er mir vieleicht sagen wie ich das anders absichern könnte ...
 
Sehe da im Moment keinen Sinn, warum er es bei der einen Seite macht und bei der anderen nicht.

Da ich nicht genau weiss, wie das ganze drum herum aussieht, hier nur vermutungen.

- wird auf der Seite, auf der nichts ausgegeben wird, auch wirklich die "checkuser.php" includeded? Stimmt der Pfad? Eigentlich ja, weil sonst würde es Fehlermeldungen hageln.
- Schreib mal in der checkuser.php var_dump($_SESSION);
Dies gibt dir das ganze Session Array aus, vielleicht gehen die Informationen irgendwo vorher schon verloren!

Was hat komisch ist, das wenn $_SESSION[.. leer ist, soll er ein Header Location auf eine neue Seite machen, dies passier anscheinend nicht, weil du sagst, die Seite würde die Informationen nicht anzeigen. Daher vermute ich, das die checkuser.php nicht aufgerufen wird (eventuell error_reporting(0) drin, das keine Fehlermeldung kommt?!)

Wirklich ziemlich suspekt.
 
Hi Mairhofer,

habe jetzt mal das var_dump($_SESSION) eingetragen und er zeigt mir auch bei den meisten Seiten den dump an
PHP:
array(6) { ["user_id"]=>  &string(2) "37" ["user_nickname"]=>  &string(6) "Meyer" ["user_nachname"]=>  &string(0) "" ["user_vorname"]=>  &string(0) "" ["user_mail"]=>  &string(15) "test@test.de" ["user_titel"]=>  &string(4) "Herr" }

Doch auf den anderen Seiten steht
PHP:
array(0) { }

Der header wird aufgerufen bzw. die Weiterleitung funktioniert. Das komische ist das er die Session Variablen scheinbar verliert und nur auf einigen Seiten.
 
So wie sich das anhört geht die Session Id verloren.Das kann bassieren wenn link aufgerufen werden die Php nicht prashen kann zbsp. Javascript links unsw.
Bwz wenn du noch mit einer ältern Php version arbeits kann es auch vorkommen das die Id nicht zu nächsten Seite geleitet wird.

Um zu sicher gehen das auch überall die ID der Session bekannt ist fügt man das einfach bei jeden link hinten dran als Get Parameter

PHP:
<a href="link.php?<?=SID;?>">

Mfg Splasch
 
PHP:
<a href="link.php?<?=SID;?>">

Das habe ich jetzt mal ausprobiert doch die SID ist leer d.h. es ist kein Wert drin enthalten...

Aber warum ist dort nichts drin ? Ich dachte diese Variable wird automatisch beim Session start befüllt...
 
Dann probier das

PHP:
if(!defined('SID'))
{
  define('SID', session_name() . '=' . session_id());
}

oder beim link dann so dran hängen. ?session_name() . '=' . session_id()

Das müßte dann aufjedenfall gehen.

Mfg Splasch
 
ok habe es jetzt so gemacht
PHP:
$SID = session_id();
Dann zeigt er mir die Session ID an....
aber das bringt mir ja nicht wirklich was wenn ich die jetzt übergebe er muss mir ja die Variablen anzeigen bzw die benötige ich ja...
PHP:
$_SESSION["user_id"] = $row["Id"]; 
  $_SESSION["user_nickname"] = $row["Nickname"]; 
  $_SESSION["user_nachname"] = $row["Nachname"]; 
  $_SESSION["user_vorname"] = $row["Vorname"];
  $_SESSION["user_mail"] = $row["Mail"];
  $_SESSION["user_titel"] = $row["Titel"];


Also gebe ich die ID in der URL mit und mach dann die Seite auf wo das array von var_dump leer war ist es jetzt immernoch leer...
 
Zuletzt bearbeitet:
Zurück