Session Problem beim User Login
Klaus Peter
- php
0 wahsaga0 Klaus Peter0 wahsaga0 Klaus Peter0 wahsaga0 Klaus Peter0 wahsaga0 Klaus Peter0 wahsaga
Hallo,
ich habe ein Session Problem und zwar habe ich ein Script wo sich der User einloggen kann.
Nun möchte ich es den User ermöglichen sein Username zuändern.
Wenn ich auf dem Link klicke wo er sein Name ändern kann soll über die Session auch der Username übergeben werden.
Aber das funktioniert nicht richtig. Die Session ID wird gesetzt und auch dem anderen Script übergeben aber den Username kann ich nur so auslesen:
session_register('user'); // line 7
echo $user;
Ich kriege auch das richtige ergebnis aber zugleich auch eine Fehlermeldung mit der ich wenig anfangen kann?
---
Warning: Cannot send session cache limiter - headers already sent (output started at /var/www/login/passwort_change.php:2) in /var/www/login/passwort_change.php on line 7
admin
---
wie kann ich sonst anders meine varibale session variable auslesen ich habe schon alles ausprobiert ($_SESSION['user']; etc....)
hat jemand eine idee wo der fehler ist? ich sehe auch das der session cache schon gesendet wurde aber anders bekomme ich die variable nicht ausgeben...
danke!
hi,
Warning: Cannot send session cache limiter - headers already sent (output started at /var/www/login/passwort_change.php:2) in /var/www/login/passwort_change.php on line 7
vor dem ausgeben eines http-headers per php (und auch eine session sendet solch einen header für das cookie) dürfen _keinerlei_ andere ausgaben erfolgt sein.
gruss,
wahsaga
Warning: Cannot send session cache limiter - headers already sent (output started at /var/www/login/passwort_change.php:2) in /var/www/login/passwort_change.php on line 7
vor dem ausgeben eines http-headers per php (und auch eine session sendet solch einen header für das cookie) dürfen _keinerlei_ andere ausgaben erfolgt sein.
was meinst du genau???
wie löse ich nun mein problem um die variable abzurufen?
hi,
was meinst du genau???
du hast einen fehler in deinem script, der die session-geschichte am funktionieren hindert.
was die meldung bedeutet, habe ich dir gesagt.
wie löse ich nun mein problem um die variable abzurufen?
zuerst einmal beseitigst du den fehler.
gruss,
wahsaga
also genau habe ich das mit session nicht verstanden...
kann ich an meiner session id den username nicht anhängen?
also es funktioniert nur wenn ich mit form post den username ins andere script sende.
ich dachte immer es wäre möglich mit an die session varibale zuhängen?
das funktioniert anscheinend nur innerhalb des selben scripts?
hi,
also genau habe ich das mit session nicht verstanden...
kann ich an meiner session id den username nicht anhängen?
an die session-id hängst du gar nichts an.
du sagst php nur dass du eine session starten möchtest, und welche variablen du darin speichern willst. dies informationen legt php dann in einer temp-datei auf dem server ab.
und um zuordnen zu können, welche datei zu welcher session gehört, wird die session-id verwendet. diese ist auch das einzige, was bei jedem request vom client zum server mitgeschickt werden muss.
aber ändern kannst und darfst du die session-id nicht.
php gibt diese vor.
denn wert der in der session gespeicherten variablen $user kannst du aber natürlich ändern - andernfalls wären sessions ja ein ziemlich unvollständiges konzept.
gruss,
wahsaga
hallo,
ich habe hier noch eine frage...
und zwar habe ich hier 3 scripte die auch funktionieren, das heisst ich rufe die nacheinander auf.
1.php
---
<?php
session_start();
$name= session_name();
echo $name,"<br>";
$KdNr=101;
session_register("KdNr");
?>
---
2.php
---
<?php
$ArtNr=100101;
$BestNr="999-876";
$ANr="2000-101";
session_register("ArtNr");
session_register("BestNr");
session_register("ANr");
?>
---
3.php
---
<?php
session_start();
echo "Artikelnummer: ".$ArtNr."<br>";
echo "Bestellnummer: ".$BestNr."<br>";
echo "Kunden Nummer: ".$KdNr."<br>";
echo "Auftrag Nummer: ".$ANr."<br>";
session_destroy();
?>
---
meine frage ist warum muss ich im 3. script die session nochmals starten um die variablen auszulesen? ich dachte immer die wäre schon gestartet sonnst könnte ich doch gar keine varibalen in der session abspeichern.
im 2.php script werden ja auch die die ganzen varaibalen in der session gespeichert und da habe ich kein session_start(); gemacht!
nur bei dem auslesen im 3.php script musste ich es machen, aber wieso? eine antwort dazu habe ich auch nicht gefunden...
hi,
im 2.php script werden ja auch die die ganzen varaibalen in der session gespeichert und da habe ich kein session_start(); gemacht!
wenn du dich bequemen würdest, die befehle die du einsetzt, auch mal im manual nachzuschlagen, wärst du bei session_register() auf folgenden satz gestossen:
"Wenn session_start() nicht vor dieser Funktion aufgerufen wurde, erfolgt ein impliziter Aufruf von session_start() ohne Parameter."
dort findest du übrigens auch weitere gute hinweise, z.b.
"Achtung
Wenn Sie wollen, dass ihr Script unabhängig von der Einstellung von register_globals funktioniert, müssen Sie stattdessen das Array $_SESSION verwenden, weil $_SESSION-Einträge automatisch registriert werden. Wenn Sie in Ihrem Script session_register() verwenden, funktioniert es nicht in Umgebungen, in denen die PHP-Anweisung register_globals deaktiviert ist."
gruss,
wahsaga
"Wenn session_start() nicht vor dieser Funktion aufgerufen wurde, erfolgt ein impliziter Aufruf von session_start() ohne Parameter."
ja genau da war ich auch schon und das habe ich nicht verstanden! was verstehe ich unter einem implizieten aufruf? wann weiß ich das ich einen implizieten aufrufe habe?
hi,
"Wenn session_start() nicht vor dieser Funktion aufgerufen wurde, erfolgt ein impliziter Aufruf von session_start() ohne Parameter."
ja genau da war ich auch schon und das habe ich nicht verstanden! was verstehe ich unter einem implizieten aufruf? wann weiß ich das ich einen implizieten aufrufe habe?
"explizit" ist der aufruf von session_start(), wenn _du_ ihn in deinen code hineinschreibst.
wenn du ihn jedoch weglässt, und einfach so session_register() verwendest, kann das ja _eigentlich_ nicht funktionieren - es wurde ja keine session gestartet.
der php-interpreter "weiss" aber um diesen umstand, also startet er die session selber, ohne dass _du_ den befehl session-start() irgendwo hingeschrieben hättest - also "implizit".
gruss,
wahsaga