PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Variablen aus Session auslesen


septicus
23.02.2002, 19:07:32
Hi,
ich habe ein Problem (ich schäme mich dafür, eine solche dumme Frage zu stellen, aber sorry, ich komme einfach nicht weiter und sitze schon seit 2 Tagen daran):

in einer Datei starte ich eine Session und registriere darin Variablen, die ich über die URL quer durch alle aufgerufenen Dateien mitschleppe.

Nun möchte ich in einer anderen Datei die in der Session festgelegten Variablen wieder auslesen.
Ich weiss, dass man das irgendwie mit session-decode() macht.
Ich komme leider nur nicht drauf, was ich dieser Funktion als Übergabeparameter übergeben muss.
Sorry, Damir, aber Dein beispiel bei der Funktion hat mir auch nicht weitergeholfen, da in diesem alles in einer Datei passiert: Session starten, Variablen registrieren, Variablen wieder auslesen.

Konkret möchte ich also wissen, was ich anstelle von $database (im Beispiel) übergeben muss (wie schon gesagt, die session wurde in einer anderen Datei gestartet und in der anderen Datei wurden auch die Variablen registiert).

THX

Mike

Matthias
23.02.2002, 23:17:38
Du brauchst dich nicht zu schämen. Es gibt keine Dummen fragen.

Wenn du auf die neue Datei linkst dann gib das wie folgt an:

<a href="datei.php?<?PHP echo session_name()."=".session_id(); ?>">Link</a>

Wenn du dann in der datei.php die session startest, dann hast du schon alle Variablen zur Verfügung.

Je nachdem wie der Server (PHP) konfiguriert wurde kannst du auch session_name()=session_id() weglassen. Man kann das in der phpinfo() nachschaun. Weiß das aber nicht auswendig. Werde da morgen mal nachsehen.

Damir
24.02.2002, 00:47:47
Hi,
ein wenig kuerzer.

Falls short tag enabled:
<a href="datei.php?<?=SID?>">Link</a>

ansonsten

<a href="datei.php?<?php echo SID?>">Link</a>

Beispiel:
Datei index.php

<?PHP

session_start();

if(!session_is_registered('zaehler')){
session_register('zaehler');
$zaehler = 1;
}
else{
$zaehler++;
}

echo 'Aktueller Counterstand: ' . $zaehler;
?>
<br><br>
<a href="seite2.php?<?=SID?>">Seite 2</a>



Datei seite2.php

<?PHP

session_start();

if(!session_is_registered('zaehler')){
session_register('zaehler');
$zaehler = 1;
}
else{
$zaehler++;
}

echo 'Aktueller Counterstand: ' . $zaehler;
?>
<br><br>
<a href="index.php?<?=SID?>">Seite 1</a>

Beachte aber, dass Du auf jeder Seite wo Du die Session benoetigst auch session_start() aufrufst. Weiterhin ist unbedingt darauf zu achten, dass vor session_start() nichts anderes zum Browser gesendet wird, da es sonst zu einer Fehlermeldung kommen wird.

Bye Damir

septicus
24.02.2002, 12:50:12
Dankeschön.. das waren genau die Infos, die ich gebraucht habe :-)

Ein fettes THX,

Mike

ThomasK
01.03.2002, 00:06:29
An Damir:

Ich habe mal dein Script ausprobiert. Nun ist mir aufgefallen, dass in der URL die SessionID zwei mal vorkommt (ich habe Cookie ausgeschaltet, um es so zu testen).

Hier mein Link:

http://localhost/seite2.php?PHPSESSID=9b598a19093714a5c3d47518d6818f3f&PHPSESSID=9b598a19093714a5c3d47518d6818f3f

Ist das normal?

Mit bestem Dank im Voraus

Thomas K.

ThomasK
01.03.2002, 00:13:15
Immer wenn ich etwas mit Session mache, erscheint eine Fehlermeldung, die ich mir nicht erklären kann. Ich denke, es muss an meine Einstellungen liegen, denn ich habe das obige Script 1:1 übernommen.

Die Fehlermeldung:
Warning: open(/tmpsess_9b598a19093714a5c3d47518d6818f3f, O_RDWR) failed: m (2) in c:foxservwwwindex.php on line 3


Was kann das sein?

Vielen Dank

ThomasK
01.03.2002, 00:23:32
Ich habe nun das Script ein wenig verändert. Ich habe auf der zweiten Seite folgendes gemacht....

(...)
if(!session_is_registered('zaehler')){
session_register('zaehler');
$zaehler = 33; //anstatt 1 => 33
(...)

Ich interpretiere es so, dass wenn session_register('zaehler') noch nicht ausgeführt wurde, wird es auf der zweiten Seite noch gemacht. Nun habe ich es aber auf der ersten Seite schon ausgeführt. Wieso setzt er mir es auf der zweiten Seite nochmals neu? (Ich erhalte bei der Ausgabe von zaehler den Wert 33).

Mit bestem Dank

Thomas K.


PS: Ich entschuldige mich für die Flut an Beiträge.

septicus
01.03.2002, 00:42:32
Hi Thomas,

ich versuche mal mein spärliches Wissen in Sachen PHP und Session zur Lösung deiner Probleme beizutragen:

---------------------------------------------------------------------------
Ich habe nun das Script ein wenig verändert. Ich habe auf der zweiten Seite folgendes gemacht....

(...)
if(!session_is_registered('zaehler')){
session_register('zaehler');
$zaehler = 33; //anstatt 1 => 33
(...)

Ich interpretiere es so, dass wenn session_register('zaehler') noch nicht ausgeführt wurde, wird es auf der zweiten Seite noch gemacht. Nun habe ich es aber auf der ersten Seite schon ausgeführt. Wieso setzt er mir es auf der zweiten Seite nochmals neu? (Ich erhalte bei der Ausgabe von zaehler den Wert 33).
-------------------------------------------------------------

Wenn ich das richtig mitbekommen habe, fehlt in dem Skript die Auflösung der Variablen mittels session_decode(), um an den bereits gespeicherten Wert zu kommen:

Datei 2:
<?PHP

session_start();

if(!session_is_registered('zaehler')){
session_register('zaehler');
$zaehler = 1;
}
else{
session_decode();
$zaehler++;
}

echo 'Aktueller Counterstand: ' . $zaehler;
?>
<br><br>
<a href="index.php?<?=SID?>">Seite 1</a> ?>

##################################

Antwort auf nächsten Beitrag:

Zitat:
-------------------------------------------------------------------------
Immer wenn ich etwas mit Session mache, erscheint eine Fehlermeldung, die ich mir nicht erklären kann. Ich denke, es muss an meine Einstellungen liegen, denn ich habe das obige Script 1:1 übernommen.

Die Fehlermeldung:
Warning: open(/tmpsess_9b598a19093714a5c3d47518d6818f3f, O_RDWR) failed: m (2) in c:foxservwwwindex.php on line 3
--------------------------------------------------------------------------
Zitat Ende

Der in deiner php.ini angegebene Pfad zur Speicherung der Sessions auf dem Server existiert nicht.
Schau mal in deiner php.ini nach, welcher Pfad hinter

session.save_path =

steht. Dieser muss existieren, und die Rechte müssen auf Schreibrechte gesetzt sein.

##################################

Antwort auf nächsten Beitrag:

Zitat:
--------------------------------------------------------------------------
Ich habe mal dein Script ausprobiert. Nun ist mir aufgefallen, dass in der URL die SessionID zwei mal vorkommt (ich habe Cookie ausgeschaltet, um es so zu testen).

Hier mein Link:

http://localhost/seite2.php?PHPSESSID=9b598a19093714a5c3d47518d6818f3f&PHPSESSID=9b598a19093714a5c3d47518d6818f3f

Ist das normal?
--------------------------------------------------------------------------
Zitat Ende

wenn das in der php.ini so eingestellt ist, dann werden lokale Links auf den Seiten (also links ohne "http://" am Anfang) automatisch mit der SessionID ergänzt. Wenn du nun das noch von Hand anhängst (bspw: seite2?SID ) dann schreibt der Server da erstens die von dir von Hand erzwungene SessionID rein und dann hängt er sie noch automatisch an.

Abhilfe: einfach nicht von Hand anhängen :-)

######################

Ich hoffe, meine Antworten sind nicht ganz falsch. Ich hatte in den letzten Tagen die gleichen Probs und hab sie durch dieses Forum und aufmerksamem Studium verschiedener Quellen lösen können und mir wie oben beschrieben erklären können.

Good Luck!