PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP-Session + Variable


MichaelR
02.08.2002, 18:14:18
Hallo,

die Session-Technik möchte ich für ein bestimmtes Webprojekt einsetzen.

Hab' ich auch deshalb schon in zwei Tutorials das Kapitel über Sessions durchgelesen aber hänge immer noch an folgendem Problem:

mit session_register() registriere ich eine Variable namens "User";

an die Url der einzelnen php-Seiten wird die Session-ID angehängt.

In einer Datei mit Dateinamen = SessionID wird die Var. "User" abgespeichert.

Aber wie bitte kann ich die Vari. jetzt wieder von dieser datei auslesen ???

Bin über jede Hilfe dankbar.

Grüße
Michael

Ben20
02.08.2002, 18:32:15
Du mußt in jeder Datei die über die Session Vars verfügen soll

session_register("VariablenNameOhneDasDollarZeichen");


ausführen. Dann solltest Du im weiteren Script einfach auf

$VariablenNameOhneDasDollarZeichen;


zugreifen können!

Progman
02.08.2002, 19:37:56
besser ist es mit $_SESSION['varname'] den Wert auszulesen.
Ich meine man kann neue vars direct in $_SESSION speichern und diese werden dann weitergegeben

$_SESSION['bla']="Wert";

im nächsten script kann man dann

echo($_SESSION['bla']);

machen.

MichaelR
02.08.2002, 20:24:47
Hallo,

danke für Eure beiden Lösungen;

aber leider funktioniert keine davon.

bei der $_Session[...] bekomme ich den Hinweis, dass die Variable in Klammern undefiniert sei.


Grüße
michael

Ben20
02.08.2002, 20:30:18
Hast Du $_Session oder $_SESSION geschrieben? Ich frage weil Du es hier klein hast. Muß aber groß sein.

Du mußt übrigens bei beiden Versionen das Dollarzeichen der Variable weglassen.

Vielleicht liegts auch an der php.ini - Da muß man auch irgendwas einstellen damit es klappt.

MichaelR
02.08.2002, 22:54:24
Hallo Ben20,

Die $_SESSION[...] ist groß geschrieben - nur hier im Posting war's klein.

Vielleicht liegt's auch an dem Vorgehen wie ich mit der Session umgehe ?

Was mache ich ?

(1. )
session_start();
session_id();

session_name("NEUESESSION");

session_register("UserName");
session_register("User_ID");
session_register("Lang");

(2.)

Die Session-ID wird an die URl für die nächste Seite angehängt und dort auch wieder in die Seite ausgelesen (in eine unabhängige neue Variable)

(3.)

Im HTML versuche ich bisher mit

<?php echo $_SESSION['UserName'] ?>

diese Variable abzufragen, mit dem Ergebnis aus dem letzten Posting.

In der Datei für die Session stehen die obigen regristrierten Werte alle dring.

Grüße
Michael

PS. Die php.ini schau' ich mir jetzt mal an - vielleicht hagt's auch an der ??

CyberAge
03.08.2002, 06:17:12
versuche es mal ohne session_register(); !

erstelle einfach einen weiteren wert im array mit folgendem syntax:

$_SESSION[name] = "inhalt";

Es wird bei den neuen PHP-Versionen nämlich davor gewarnt beim umgang mit sessions session_register(); session_unregister(); usw... zu verwenden. Warum weiß ich leider auch nicht. Ich hab mein Projekt darauf umgestellt und es funzt genauso gut wie vorher! Außerdem lasse mal die ' in der [] weg, vielleicht liegt es auch daran!

MichaelR
05.08.2002, 19:09:24
Hallo,

danke für die Tipps- konnte sie leider nicht früher ausprobieren.

>> versuche es mal ohne session_register(); !

>> erstelle einfach einen weiteren wert im
>> array mit folgendem syntax:

>> $_SESSION[name] = "inhalt";

>> Es wird bei den neuen PHP-Versionen nämlich davor gewarnt
>> beim umgang mit sessions session_register(); session_unregister();
>> usw... zu verwenden. Warum weiß ich leider auch nicht. Ich hab
>> mein Projekt darauf umgestellt und es funzt genauso gut wie
>> vorher! Außerdem lasse mal die ' in der [] weg, vielleicht liegt
>> es auch daran!

hab alle gelöscht, aber es hakt immer noch;

Jetzt kann ich zwar aus der Session-Datei den gespeicherten WErt für username auslesen und mittels
$_SESSION['UserName'] (ohne '' gibt's einen Hinweis) in die php Seite setzen.

Aber es wird auch immer folgender Hinweis mit ausgegeben:

"
Warning: Cannot send session cache limiter - headers already sent (output
started at ....
"

Die beiden Zeilen, die hier dann genannt werden, enthalten den Aufruf:
session_id();
session_start();


?????

Ich weiß, woran das immer noch hängen bleibt ? Vielleicht mach ich auch einen Denkfehler beim Verwenden der
Sessions ?

Vielleicht könnt ihr mir dabei nochmal helfen ?

Also, die __erste Php Seite__ (start.php) enthält u.a. folgendes:

// S T A R T the session :
session_start();
session_id(); // PHPSESSID

session_name("NeueSession");

$_SESSION[UserName] = $UserName;
$_SESSION[User_ID] = $UserID;
$_SESSION[Lang] = "Lang";


// open the main page
echo "<script>parent.location.href='main.php?PHPSESSID=" . session_id() . "';</"."script>";


Die obigen Variablen werden vorher mit (kurzen) Werten gefüllt.


Die __zweite Seite__ (main.php) wird aufgerufen:

oben in der Seite steht:

session_id();
session_start();


An der vorgesehenen Stelle weiter unten in der php Seite erscheint der UserName mittels

<?php echo $_SESSION['UserName']; ?>

(ohne die '' gibt's einen Hinweis)

Auch hier erscheint die obige Warnung - und zwar genau überdem UserNamen.


Sieht vielleicht jemand, ob ich da irgendeinen Fehler mache, beim Einsatz der Sessions ?

Bin um jede Hilfe dankbar !!!

Grüße
Michael



Ach ja, ich hab' nachgesehen: es wird die standard php.ini verwendet und nicht die als recommended ausgewiesene;
hatte beide mal vertauscht aber bei der recommended-Version ging überhaupt nix.

Ben20
05.08.2002, 20:03:41
"header allready sent" - bedeutet, dass schon irgendwas an den Browser geschickt wurde . bzw. das <html> oder auch nur eine Leerzeile über dem ersten <?php


Sessions arbeiten mit Cookies und die können nur gesetzt werden bevor irgendwas an den Browser gesendet wurde.

Es könnte auch sein, das aus dem // Start session eine Leerzeile wurde und diese an den Browser geschickt worden ist.

MichaelR
05.08.2002, 21:01:08
Hi Ben20,

heißt das dann, dass ich es mehr oder weniger ignorieren kann ?

Grüße
Michael

Ben20
05.08.2002, 21:15:24
Nö, wenn Du etwas an den Browser sendest, bevor er das Sessioncookie setzen kann, funktioniert das Sessionmanagement nicht richtig.

MichaelR
06.08.2002, 00:33:04
Hi Ben20,

hab's gefunden; vor dem session_start(); war etwas, das ich jetzt darunter verfrachtet hab' - und jetzt: keien Fehlermeldung mehr ...

Ist das Klasse !!!


herzlichen Dank für Deine Hilfe
Michael

Ben20
06.08.2002, 10:52:55
Keine Ursache!