Archiv verlassen und diese Seite im Standarddesign anzeigen : Session-Problem
Paranoia 09-09-2003, 14:30 Hallo, beschäftige mich das erste Mal mit Sessions komme aber irgendwie gar nicht richtig rein.
Mit dem Code
//////////////////
if($_GET["action"] == "login") { // aus dem Login-Template
$user = $_POST["user"];
session_start();
session_register("user");
}
else
include("./templates/login.tpl");
//////////////////
bekomme ich ne Fehlermeldung:
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at F:\.....
Gibst du zuvor schon html aus? Steht das script am anfang der seite? Includest du zuvor eine seite?
Wenn Du jetzt erst mit Sessions anfängst dann vergiß "session_register("user");" und verwende lieber $_SESSION["user"] ... !
Paranoia 09-09-2003, 19:02 Original geschrieben von Seccho
Gibst du zuvor schon html aus? Steht das script am anfang der seite? Includest du zuvor eine seite?
Hallo, ja vorher werden schon HTML-Templates included
das darfst du natürlich nicht!
-> siehe forum!
-> siehe manual!
Paranoia 09-09-2003, 21:06 Danke TobiaZ die Fehler meldungen sind weg, aber benutzen kann ich irgendwie keine Variablen.
1. Datei:
session_start();
$user= "test";
session_register("test");
2. Datei:
session_start();
echo $user;
Beides steht jeweils am ANfang aber es wird nichts ausgegeben. Muss man ausser dem session tmp-pfad noch was anderes in der php-ini umstellen ?
Hab da aber nix wirklich gefunden
Coragon Rivito 09-09-2003, 21:46 wenn du was umstellen willst und nen leck in deine php installation schlagen willst - nur zu ..
die einstellung heisst register_globals
verwende aber stattdessen lieber - wie goth schon erwähnte - $_SESSION
$_SESSION['user'] = 'Coragon';
echo $_SESSION['user'];
Paranoia 09-09-2003, 21:52 Original geschrieben von Coragon Rivito
wenn du was umstellen willst und nen leck in deine php installation schlagen willst - nur zu ..
die einstellung heisst register_globals
verwende aber stattdessen lieber - wie goth schon erwähnte - $_SESSION
$_SESSION['user'] = 'Coragon';
echo $_SESSION['user'];
register_globals ist eh angestellt, wie bei fast jedem kommerziellen Webserver. ANsonsten würden auch die meisten Scripte net mehr laufen :-)
geht aber auch mit der oben genannten Schreibweise nicht :-/
dann hast du noch irgendwas falsch!;)
wer auf on programmiert ist selber schuld :D
poste mal aktuellen code
Paranoia 10-09-2003, 02:00 <?
session_start();
$_SESSION["user"] = "daniel";
include("./templates/openDatabase.tpl");
/* Haupt-Template */
include("./templates/main.tpl");
.
.
.
function ...
.
.
.
?>
2. Datei zum Prüfen ob Variable übergeben wurde
<?
session_start();
include("../templates/openDatabase.tpl");
/* Haupt-Template */
include("../templates/main.tpl");
/* Inhalt der HTML-Seite */
function inhalt()
{
echo $_SESSION["user"];
.
.
.
}
?>
Ähem, wie rufst Du die 2. Datei (bei der Du offensichtlich den User von der 1. sehen möchtest, aber nicht siehst) auf?
Die 2. muss ja was von der SID im 1. mitkriegen. Das passiert entweder über ein Cookie (dann kannst Du die 2. fast so aufrufen wie Du willst), oder eben in der URI (meistens so /script2.php?PHPSESSID=fsdf78ds9f7sd9).
Mach doch mal im ersten Script einen relativen Link (bei session.trans_sid=on (per default) wird die SID automatisch angehängt) und benutze diesen Link um auf's 2. Script zu kommen.
Paranoia 10-09-2003, 15:25 die 2. Seite wird aus einem HTML-Template heraus aufgerufen (per click), welches in der ersten Datei included wird.
Paranoia 10-09-2003, 15:34 alles klar war doch ein php.ini Fehler ....
session.use_trans_sid = 0
stand da, habs auf 1 gestellt und jetzt gehts
Ich wollte darauf hinaus, ob Script 1 die SID an Script 2 übergibt.
Tut es das?
Mach mal bei Script 1 irgendwo nach session_start() ein echo session_id() und dasselbe auch bei Script2. Haben Sie dieselbe?
<Edit>
Wir ha'm gleichzeitig gepostet.
Jetzt ist's klar, dass die SID nicht weitergegeben wurde.
</Edit>
|