Sessioninhalt wird nicht ausgegeben

service4-you

Mitglied
Hallo, ich hoffe das mir jemand einen Tipp geben kann. Bis jetzt hat das mit der Session immer geklappt. Nun versuche ich eine Session von einem Script ab zu greiffen, jedoch ohne Erfolg. Ich habe mal alles mit
PHP:
print_r($_SESSION)
ausgegeben und erhalte folgendes Ergebnis ( Ausschnitt )
Code:
Array
(
    [session_inst] => 1
    [session_chat] => 1
    [fc_users_cache] => Array
        (
            [1] => Array
                (
                    [id] => 1
                    [user] => alf
                    [pass] => test
                    [vorname] => Jens-Alf
                    [nachname] => Kesten
                    .......

Wenn ich jedoch auf der gleichen Seite es versuche mit z.B.
PHP:
echo $_SESSION[id];
auszugeben, erhalte ich keine Ausgabe.

Was mache ich falsch ?

Ging schon davon aus, das die session in einem array gespeichert ist und habe es dann mit
PHP:
$_SESSION['id']['fc_users_cache'];
probiert, jedoch auch hier kein Erfolg.

Für jeden Tipp bin ich dankbar

Grüsse aus Einsbach
 
Zuletzt bearbeitet:
Schau doch mal nach, ob an der Stelle, wo Du die ID ausgeben möchtest, die Session noch da ist.

Mach doch mal statt echo einen var_dump($_SESSION) oder var_dump($_SESSION[id]).
Was sagt denn ein echo $_SESSION['name'] ;

Viele Grüße
 
ist alles auf einer Testseite.

PHP:
<?
    session_start();
    error_reporting(E_ALL);
    echo $_SESSION['id'];
    echo "<br>";
    echo "<pre>\n";
    print_r($_SESSION);
?>

Mit error_report erhalte ich folgende Fehlermeldung

Notice: Undefined index: id in /var/www/htdocs/ks1821/html/test.php on line 4

Oben wird es nicht ausgegeben und unten schon. Das gleiche ist auch mit "$_SESSION['name'];"
 
Zuletzt bearbeitet:
Na, die Session -- id ist einfach noch nicht gesetzt und kann dir deswegen auch nicht ausgegeben werden. So ist die Fehlermeldung zu verstehen. Es gibt keine $_SESSION['id']

Gemäß Deiner Fehlermeldung wird das funktionieren:

PHP:
<? 
    session_start(); 
    error_reporting(E_ALL); 
   $_SESSION['id'] = 3;
    echo $_SESSION['id']; 
    echo "<br>"; 
    echo "<pre>\n"; 
    print_r($_SESSION); 
?>


Viel Erfolg :)
 
doch die Session ist in einer anderen Datei gesetzt, sont würde ja
PHP:
print_r($_SESSION);
nichts ausgeben auch wenn die Fehelermeldung was anderes sagt, deshalb der POST.
 
Danke grrrrrr jetzt habe ich den Cookie gelöscht und bekomme nichts mehr angezeigt,
aber das Script funktioniert und ein neuer Cookie wird nicht angelegt. Ich versteh das
nicht wie t das Ding. Ich bekomme über print_r($_REQUEST); nur noch folgende Ausgabe
Array
(
[XPOS] => 729
[PHPSESSID] => e05ff413012be5841cca75ae9bc30b14
[cls] => 36a0f7b10c471ed4a6dac998aa3dbf15
)

Wenn eine PHPSESSID existiert muss es doch auch eine Session geben ?
 
Das sieht so aus als ob du jetzt die entsprechenden Werte in deiner Session nicht mehr gesetzt hast.

Kannst du einmal den Codeteil Posten in dem du die Werte für deine Session setzt?

Versuch einfach mal von der Seite auf der du die Werte setzt nochmal direkt zu wechseln auf deine Testseite, dann den Abruf der Daten wie von campari geschrieben machst.

PHP:
echo $_SESSION['fc_users_cache'][1]['id'];
 
Ich blicke bei diesem Script einfach nicht durch :-) Danke für die Hilfe.
Hier mal der Teil vom dem Script der IRGENDWIE EINE SESSION EZEUGT.

PHP:
session_name("cls");
session_start();
if($_SESSION[user]!="") $user=strtolower($_SESSION[user]);
if($_SESSION[pass]!="") $pass=strtolower($_SESSION[pass]);

if($_POST[user]!="") $user=strtolower($_POST[user]);
if($_POST[pass]!="") $pass=strtolower($_POST[pass]);
if($user!="" && $pass!="" && $d!="logout")
{
    $mdc = mysql_query("SELECT * FROM ".$dbx."_user WHERE user = '".addslashes($user)."' AND pass = '".addslashes($pass)."'");
    $usrd = mysql_fetch_array($mdc);
    if($usrd[id]!="")
    {
        $_SESSION[user] = $user;
        $_SESSION[pass] = $pass;
         $lg="ok";
        mysql_query("UPDATE ".$dbx."_user SET online='".time()."' WHERE id='".$usrd[id]."'");
    } else {
        session_unset();
        $lg=""; }
    } else {
        session_unset();
        $lg="";
    }

habe nun gesehen das die Datei die diesen Code enthält immer mit include eingebunden wird. Wenn ich zwei einzelne Seiten mache klappt es. Wenn ich zwei neue Seiten mache und diese Datei einbinde klappt es nicht.Ich muss irgendwie irgendeine Angabe auf eine andere Seite entführen können.
 
Gibt ein paar komische Teile in deinem Code (also, für mich komisch, ich seh ja nur den kleinen Teil)

Außerdem wird in diesem Script nirgends in die Session etwas gespeichert was du vorher versucht hast auszulesen. (Diese Id vorallem)

Da ich aus deinem vorherigen Post herrauslese dass du das script nicht richtig verstehst mach ich einfach mal ein paar erklärende kommentare in das Script

PHP:
// Der Name der Session wird festgelegt
session_name("cls");

// Die Session wird erstellt
session_start();

// Prüfen ob in der Session bereits ein User und ein Passwort gespeichert ist
// Wenn ja werden die Werte in die beiden Variablen @user und @pass gespeichert
if($_SESSION[user]!="") $user=strtolower($_SESSION[user]);
if($_SESSION[pass]!="") $pass=strtolower($_SESSION[pass]);

// Hier das selbe nocheinmal wie oben nur mit POST statt der Session
// Warum das hier nocheinmal gemacht wird bleibt mir verborgen ;)
// Maybe weil hier nach dem neueinloggen die Werte überspeichert werden oder dergleichen
// kann ich hier aber nicht herraruslesen
if($_POST[user]!="") $user=strtolower($_POST[user]);
if($_POST[pass]!="") $pass=strtolower($_POST[pass]);

// Wenn der Nutzer das Passwort gesetzt sind und er nicht ausloggen möchte(?)
// das $d != "logout" versteh ich als ein Logout-Zeichen für dein Script
if($user!="" && $pass!="" && $d!="logout")
{
    // Auslesen der Nutzerdaten eines bestimmten Users, der vorher in die beiden
    // Variablen gespeichert wurde @User und @Pass
    // Gespeichert in @mdc
    $mdc = mysql_query("SELECT * FROM ".$dbx."_user WHERE user = '".addslashes($user)."' AND pass = '".addslashes($pass)."'");

    // Die Daten die eben ausgelesen wurden in ein Array speichern
    $usrd = mysql_fetch_array($mdc);
    
    // Wenn eine NutzerId gesetzt ist im Array @usrd
    if($usrd[id]!="")
    {    
        // Die Sessiondaten updaten
        $_SESSION[user] = $user;
        $_SESSION[pass] = $pass;

         // Eine Variable auf OK setzten, wofür sie auch immer sein mag
         $lg="ok";

        // Die Nutzertabelle updaten, "online"-Spalte eben, WHERE die Nutzerid übereinstimmt
        mysql_query("UPDATE ".$dbx."_user SET online='".time()."' WHERE id='".$usrd[id]."'");
    } else {

        // andernfalls session kaputtmachen
        session_unset();
        $lg=""; }
} else {

     // andernfalls session kaputtmachen
    session_unset();
    $lg="";
}

Jetzt nochmal bitte genau die Frage formulieren, dann sind wir der Antwort ziemlich nah =)
 
Zurück