$_Session als inlcude einbinden.
Helmuth
- php
hallo, ich habe da ein delikates problem und somit eine frage.
ich will mir z.b. aus einem formular den wert des feldes "nachname" merken.
nach dem absende schreibe ic folgendes in meine seite:
session_start();
$_SESSION["nachname"] = $nachname;
das funktioniert soweit auch.
nun will ich diese in eine eigene datei schreiben und per include einbinden. ich brauche diese mehrmals und möchte sie nicht in alle seiten schreiben.
dateiname variablen.php:
session_start();
$_SESSION["name"] = $name;
nun binde ich dies auf meiner seite als include ein.
include_once("variablen.php");
nun kommt bei echo $_SESSION["name"] nix mehr!?
woran liegt es?
danke helmuth
hi,
dateiname variablen.php:
session_start();
$_SESSION["name"] = $name;nun binde ich dies auf meiner seite als include ein.
include_once("variablen.php");nun kommt bei echo $_SESSION["name"] nix mehr!?
woran liegt es?
Hat denn $name zu dem Zeitpunkt, wo du es in die Session schreibst, überhaupt einen Wert?
gruß,
wahsaga
hi,
dateiname variablen.php:
session_start();
$_SESSION["name"] = $name;nun binde ich dies auf meiner seite als include ein.
include_once("variablen.php");nun kommt bei echo $_SESSION["name"] nix mehr!?
woran liegt es?
Hat denn $name zu dem Zeitpunkt, wo du es in die Session schreibst, überhaupt einen Wert?
gruß,
wahsaga
ja, hat sie. ich versicke es über ein formular und dort wird sie auch ausgegeben. wenn ich die sessions nicht inlcude, sondern direkt in die seite schreibe, funkioniert es ja auch.
gruss, helmuth
hi,
bitte zitiere vernünftig - nur das, worauf du dich konkret beziehst.
ja, hat sie. ich versicke es über ein formular und dort wird sie auch ausgegeben.
Das heißt also, bei dir ist register_globals unvernünftiger Weise immer noch aktiviert?
wenn ich die sessions nicht inlcude, sondern direkt in die seite schreibe, funkioniert es ja auch.
Problem nicht nachvollziehbar.
Das error_reporting ist hoffentlich auf E_ALL eingestellt?
gruß,
wahsaga
Hallo Hemuth!
Startest Du Deine Session (session_start();
) auch auf jeder folgenden Seite wieder, oder geht diese, weil Du dies nicht tust, verloren? (Am besten auch includiert)
Schönen Gruß
Afra
Hallo Hemuth!
Startest Du Deine Session (session_start();
) auch auf jeder folgenden Seite wieder, oder geht diese, weil Du dies nicht tust, verloren? (Am besten auch includiert)Schönen Gruß
Afra
habe in der zu includierenden datei session_start() und in der seite von der aus das include aufgerufen wird session_start() gesetzt.
danke und gruss, helmuth
Hello,
habe in der zu includierenden datei session_start() und in der seite von der aus das include aufgerufen wird session_start() gesetzt.
Beim "session_start()" wird das Session-Array automatisch ins Script eingebunden,
wnn es zur vom Client an den Server übermittelten Session-ID eine Session-Datei gibt.
Sonst wird eine neue Session-Datei angelegt. Dann ist das Array $_SESSION natürlich leer.
Du musst da nichts "includen".
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hallo Tom!
Nur zur Klarstellung. Ich dachte auch nur schon wieder einen Schritt weiter, dass er nicht in allen Seiten das "session_start()" einsetzt, sondern dieses eben in einem "session.inc" setzt um es einfacher pflegen zu können, falls er dort auch noch den session_save_path setzen oder allgemeine Kontrolle der Session testen will angeben will etc... So dumm der Gedanke? ;o)
Ich hoffe, dass er es diesbezüglich richtig gemacht hat.
Schönen Gruß
Afra
Hello,
Nur zur Klarstellung. Ich dachte auch nur schon wieder einen Schritt weiter, dass er nicht in allen Seiten das "session_start()" einsetzt, sondern dieses eben in einem "session.inc" setzt um es einfacher pflegen zu können, falls er dort auch noch den session_save_path setzen oder allgemeine Kontrolle der Session testen will angeben will etc... So dumm der Gedanke? ;o)
Das geht natürlich.
Nur die Sessiondatei mit den Daten braucht er gar nicht selber anzufassen.
Vielleicht meldet sich Helmuth nochmal.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hallo Hemuth!
habe in der zu includierenden datei session_start() und in der seite von der aus das include aufgerufen wird session_start() gesetzt.
nur zum Verständnis: Du startest also zwei mal eine Session innerhalb eines abzuarbeitenden Prozesses?
Gruß aus Berlin!
eddi
Hello,
habe in der zu includierenden datei session_start() und in der seite von der aus das include aufgerufen wird session_start() gesetzt.
nur zum Verständnis: Du startest also zwei mal eine Session innerhalb eines abzuarbeitenden Prozesses?
Hab ich eben auch gestutzt, aber nichts gesagt.
So wie PHP gebaut ist, dürfte das noch nicht einmal bemerkt werden, sondern der zweite Start wird wohl einfach die Session-Datei nochmals auslesen und damit die ggf. schon veränderten Session-Werte wieder übeschreiben. Ich hab's noch nicht ausprobiert.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
hi,
So wie PHP gebaut ist, dürfte das noch nicht einmal bemerkt werden, sondern der zweite Start wird wohl einfach die Session-Datei nochmals auslesen und damit die ggf. schon veränderten Session-Werte wieder übeschreiben. Ich hab's noch nicht ausprobiert.
"Anmerkung: Ab PHP 4.3.3 resultiert der Aufruf von session_start(), nachdem die Session schon gestartet wurde, in einem Fehler der Stufe E_NOTICE. Der zweite Session-Start wird in diesem Fall einfach ignoriert."
http://www.php.net/manual/de/function.session-start.php
gruß,
wahsaga
Moin!
ich will mir z.b. aus einem formular den wert des feldes "nachname" merken.
nach dem absende schreibe ic folgendes in meine seite:
session_start();
Das startet die Session und holt den im letzten Skript zum Skriptende in $_SESSION vorhandenen Datenbestand wieder nach $_SESSION.
$_SESSION["nachname"] = $nachname;
Das überschreibt den Inhalt von $_SESSION mit dem Inhalt von $nachname.
nun will ich diese in eine eigene datei schreiben und per include einbinden. ich brauche diese mehrmals und möchte sie nicht in alle seiten schreiben.
dateiname variablen.php:
session_start();
$_SESSION["name"] = $name;
Hier überschreibst du bei jedem Skript, dass diese Datei einbindet, die Variable $_SESSION['name'] mit dem Inhalt von $name.
Wenn $name seinen Wert nicht von irgendwoher vorbelegt kriegt (GET-Parameter, POST-Formular, Cookie - das alles aber nur bei register_globals=on), dann wird in $name immer der Leerstring stehen und deine Sessionvariable immer gelöscht werden - außer das eine Mal, bei dem in $name durch das Formularabschicken was drinsteht. Nur: Dieser Zustand hält nur bis zum nächsten Skriptstart.
nun binde ich dies auf meiner seite als include ein.
include_once("variablen.php");nun kommt bei echo $_SESSION["name"] nix mehr!?
Was ja logisch ist.
Betrachte $_SESSION als ein Array, dessen aktueller Inhalt am Skriptende automatisch gespeichert und nach dem Ausführen des Befehls session_start() wieder geladen wird.
Zwischen session_start() und Skriptende kannst du dann beliebige Manipulationen daran durchführen. Du mußt aber eben gerade NICHT bei jedem Skriptstart manuell Variablen in $_SESSION reinschreiben - eher im Gegenteil willst du eventuell (was ich aber nicht für ratsam halte) Variablen mit dem Inhalt aus $_SESSION befüllen.
- Sven Rautenberg