session_start funktioniert nicht!!
judee
- php
Hallo zusammen, ich hantiere jetzt schon seit einem Tag (ok, noch nicht so lange) an meinem Problem rum.
Ich möchte das sich der User auf der ersten Seite einloggt (die Daten wurden zuvor schon in die Datenbank geschrieben und sollen verglichen werden, funktioniert auch..) und dann auf der folgenden Seite seine Angaben bzw seinen Monatsbericht einträgt. Damit ich aber nicht die ganze Zeit weider rauss fliege und mich jedesmal neu anmelden muss, möchte ich eine Session die überprüft ob ich bereits angemeldet bin und dementsprächend mich auch auf der Seite lässt. bis jetzt habe ich allerdings immer eine Fehlermeldung bekommen! "Warning: Cannot send session cache limiter - headers already sent (output started at /****/*******/www/anmelden.php:1) in /****/*******/www/anmelden.php on line ** "
Was bedeutet diese Fehlermeldung und was kann ich dagegen machen?
anmelden.php:
(nur der eräffnungsteil mit der Session, den Rest könnte ich sonst auch noch Posten...)
session_start();
$passwort="passwort_e";
$username="username_e";
session_register("passwort","username");
echo "<a href=anmelden.php?sid=".session_id()."></a>";
//Session
require ("verbindung.php");
den teil in der eingabe.php
require ("verbindung.php");
//Session öffnen
session_register(passwort, username);
echo "username_e";
wieso es mich immerwieder raussschmeisst is deshalb:
if($action == "anm"){
$pruefen = "SELECT pw FROM tab_user WHERE username = '$username_e'";
$mysql_anmeld_pruefung = mysql_query($pruefen);
$db_result = mysql_fetch_array($mysql_anmeld_pruefung);
if($passwort_e==$db_result["pw"])
{?>
wenn es dies durchlaufen hat erscheint die ganz normale Seite, aber eben nur einmal....
Bin für jeden Tipp dankbar!!!
Grüsse
judee
noch was, die Zeile die bei der Fehlermeldung angegeben wird ist diese, in der ich die session mit session_start(); eröffne......
lg
Hallo,
das der header schon gesendet wurde heißt, dass das Script vorher schon irgendwas zum Browser schickt. Schau nochmal nach, ob du vorher weder ein doctype oder irgendwas anderes stehen hast. Es kann auch eine Debug-Ausgabe oder eine echo oder oder oder sein. Es ist also wichtig, dass vorher nichts anderes als dein session_start() steht. Falls du das Script includierst, achte drauf, dass in der anderen Seite nichts vorher passiert.....
Schönen Gruß aus München
die knappschaft
hmm......hab ich verändert...kann es aber auch nicht sein...
ein Kollege meinte nun ich sollte einfach nur die Variable übergeben anhand von ....php?passwort...... und so...wo find ich da eine genaue anleitung dazu???
danke.......
Hi,
ein Kollege meinte nun ich sollte einfach nur die Variable übergeben anhand von ....php?passwort...... und so...wo find ich da eine genaue anleitung dazu???
toller Kollege, Passowrt im Klartext übertragen TsTsTs
Du darfst auch keine Includes uä. vor session_register bzw. session_start() machen
diese 2 Dinge müssen am Anfang stehen.
guck mal hier
http://de3.php.net/manual/de/ref.session.php
Session-Handling ist die richtige Methode.
ciao
romy
naja, ich glaube er meinte es auch nicht genau so, er hat mir irgendwas von <a href"xy.php?passwort=<?print$e-pw;?>> aufgeschrieben, habe ich eigentlich auch verstanden nur möchte ich mich halt noch genauer darüber informieren, was ich genau machen muss! ich habe die session_start() wirklich ganz am anfang....weiss auch nicht was es noch sein könnte...ich paste jetzt einfach mal den code rein, vielleicht ist der Fehler sonstwo.
Zuerst die anmelden.php:
<?PHP
session_start();
$passwort="passwort_e";
$username="username_e";
session_register("passwort","username");
echo "<a href=anmelden.php?sid=".session_id()."></a>";
//Session
require ("verbindung.php");
?>
<html>
<head>
<title>anmelden</title>
</head>
<body>
<p>Anmelden</p>
<table width="50%" border="2">
<form method="post" action="eingabe.php" name="form1">
<input type="hidden" name="action" value="anm">
<tr>
<td width="39%">Roche - UserID</td>
<td width="61%"><font face="Arial, Helvetica, sans-serif" size="2">
<input type="text" name="username_e">
</font>
</td>
</tr>
<tr>
<td width="39%">Passwort</td>
<td width="61%"><font face="Arial, Helvetica, sans-serif" size="2">
<input type="password" name="passwort_e">
</font></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Anmelden">
</td>
</tr>
</form>
</table>
<p> </p>
<p>Falls du noch keinen Monber Account hast, bitte zuerst <a href="first_entry.php">Anmelden</a>!!!</p>
</body>
</html>
eingabe.php:
<?PHP
session_register(passwort, username);
echo "username_e";
//Session öffnen
require ("verbindung.php");
?>
<html>
<head>
<title>eingabe</title>
</head>
<body>
<?PHP
if($action == "anm"){
$pruefen = "SELECT pw FROM tab_user WHERE username = '$username_e'";
$mysql_anmeld_pruefung = mysql_query($pruefen);
$db_result = mysql_fetch_array($mysql_anmeld_pruefung);
if($passwort_e==$db_result["pw"])
{?>
<form name="form2" method="post" action="">
<p>
<?PHP
$name = $HTTP_POST_VARS['name'];
$vorname = $HTTP_POST_VARS['vorname'];
?>
Monatsbericht von
<?PHP
$name_anzeigen = "SELECT name, vorname FROM tab_user WHERE username = '$username_e'";
$name_einblenden = mysql_query($name_anzeigen);
$name_zeigen = mysql_fetch_array($name_einblenden);
echo $name." ".$vorname;
?>
</p>
<p> Monat
<select name="monatID" size="1">
<?PHP
$connect;
$selectm="SELECT month FROM tab_month ORDER BY monthID";
$monat = mysql_query($selectm);
while ($ausgabem = mysql_fetch_array($monat))
{
?><option><?PHP
echo $ausgabem[month] . "\n" ;
?></option><?PHP
}
?>
</select>
Jahr
<select name="yearID" size="1">
<?PHP
$selecty = "SELECT year FROM tab_year ORDER BY yearID";
$yearausgabe = mysql_query($selecty);
while($ausgabey = mysql_fetch_array($yearausgabe))
{
?><option><?PHP
echo $ausgabey[year] . "\n" ;
?></option><?PHP
}
?>
</select>
</p>
<tr>
<td> <!--decription-->
Description:
<div>
<div align="left">
<p align="left"><font face="Arial, Helvetica, sans-serif" size="2">
<textarea name="description" cols="80"></textarea>
</font>
<!--stunden-->
<font face="Arial, Helvetica, sans-serif" size="2">Anz. Std
<input name="time" type="text" size="20">
</font></p>
</div>
</div></td>
</tr>
<div align="left"></div>
<p> </p>
<div align="right">
<input type="submit" name="Submit" value="Submit">
<?PHP
if($Submit=="Submit")
{
$eintrag_tab_monber = "INSERT INTO tab_monber (time, userID, description, monthID, yearID) VALUES ('$time', '$userID', '$description', '$monthID', '$yearID')";
$eintragen_tab_monber = mysql_query($eintrag_tab_monber);
}
?>
</div>
</form>
<hr>
<p>Erfasste Daten:</p>
<?PHP
// Ausgabe der Bereits eingegebenen Daten
/*$fruehere_daten_select = "SELECT * FROM tab_monber";
$fruehere_daten_auslesen =mysql_query($fruehere_daten_select);
$fruehere_daten_fetch = mysql_fetch_array($fruehere_daten_auslesen);
echo "Monat: $fruehere_daten_fetch["monthID"]";
echo "Jahr: $fruehere_daten_fetch["yearID"]";
echo "$fruehere_daten_fetch["description"]";
*/
?>
<p> </p>
<tr>
</tr>
<tr>
<td> <!--decription übersicht-->
<div>
<div align="left">
<p align="left"><font face="Arial, Helvetica, sans-serif" size="2">Description:
<input name="description_ue" type="text" value="" size="80">
</font>
<!--stunde übersicht-->
<font align="left" face="Arial, Helvetica, sans-serif" size="2">Anz. Std
<input name="stunden2" type="text" size="20">
</font></p>
</div>
</div></td>
<td><div align="90%"><font face="Arial, Helvetica, sans-serif" size="2">Total:
<input name="stundentotal" type="text" size="20">
</font></div></td>
</tr>
<?PHP }
else
{
echo "Ein Fehler ist aufgetreten, bitte versuchen Sie es nocheinmal!";
}
}
else
{ ?>
<meta http-equiv="refresh" content="0; URL=anmelden.php">
<?PHP }
?>
</body>
</html>
sieht jetzt vielleicht ein bisschen komplex und alles aus aber ich weiss nicht wie ich diese dumme Fehlermeldung wegbekomme, langsam habe ich das gefühl das es nicht mein Fehler ist sondern in der .ini datei etwas nicht aktiviert ist....
oder seht ihr sonst noch eine Alternative??
danke vielmals!
Hi judee,
naja, ich glaube er meinte es auch nicht genau so, er hat mir irgendwas von <a href"xy.php?passwort=<?print$e-pw;?>>
soetwas kenne ich nicht, was macht print$e-pw; ?
aufgeschrieben, habe ich eigentlich auch verstanden nur möchte ich mich halt noch genauer darüber informieren, was ich genau machen muss! ich habe die session_start() wirklich ganz am anfang....weiss auch nicht was es noch sein könnte...ich paste jetzt einfach mal den code rein, vielleicht ist der Fehler sonstwo.
mach einen kleinen Test, dann weisst Du woran Du bist.
Testseite1
session_start()
session_register("test");
$test = 1;
[Weiterleitung nach testseite2]
Testseite2
session_start()
session_register("test");
echo $test;
Das funktioniert nur bei angeschalteten reister_globals in der php.ini
Ansonsten musst Du mit $HTTP_SESSION_VARS auf die Variablen zugreifen
Warum benutzt Du eigentlich nicht $_SESSION? Dann brauchst Du nämlich kein session_register mehr.
BTW: ich bin mir nicht sicher, ob so etwas geht:
session_register("hallo","bla");
Ach ja und nochwas, die Anführungszeichen fehlen bei DIr überall.
ciao
romy
danke danke vielmals!
also der test funktioniert und dann wird der rest wohl auch klappen....ich brauche wohl nicht zu sagen das ich noch nicht allzuviel programmier erfahrung habe nach diesen groben Fehlern die ich zu wege gebracht habe...... aber aus fehlern lernt man und jetzt weiss ich auf was ich achten muss!!!!!!
danke!!!!!!!!!!!!!!!!!!!!!!!!!!!!
also der test hat funktioniert, die fehler habe ich eingesetzt und verbessert aber es funktioniert immer noch nicht, ab der zweiten Linie ( gleich nach <?PHP ) und dort steht nur session_start(); kommt eine Fehlermeldung, ansonsten habe ich alles angepasst.....
hmpf....jetzt bin ich mit meinem nicht wirklich grossen Programmierlatein ganz am Ende, und wie ich sonst diese Angabe weiterleiten kann weiss ich auch nicht, zu einer vorigen Frage: print $e-pw; das ist der Befehl der auf der nächsten Seite ausgeführt werden soll, also nur das eingegebene Passwort anzeigen, was allerdings auch nicht die richtige Lösung ist...
Hi judee,
also der test hat funktioniert, die fehler habe ich eingesetzt und verbessert aber es funktioniert immer noch nicht, ab der zweiten Linie ( gleich nach <?PHP ) und dort steht nur session_start(); kommt eine Fehlermeldung, ansonsten habe ich alles angepasst.....
welche?
ciao
romy
hallo
also das ist die Fehlermeldung welche ich, egal was ich mache, einfach nicht weg bekomme:
Warning: Cannot send session cache limiter - headers already sent (output started at /home/*******/www/anmelden.php:1) in /home/*******/www/anmelden.php on line 2
und eben auf dieser Linie ist nur der Befehl session_start(); mehr nicht...
da wir allerdings einen apache unter linux haben sollte es eigentlich auch keine probleme mit der php.ini geben.....
danke vielmals...
Hallo judee,
Warning: Cannot send session cache limiter - headers already sent (output started at /home/*******/www/anmelden.php:1) in /home/*******/www/anmelden.php on line 2
du hast meine Antwort von gestern Abend gelesen? (->[pref:t=55180&m=307956]) php verrät dir doch sogar die Zeile in der was an den Browser gesendet wird. Kennst du eigentlich http://www.dclp-faq.de/q/q-fehler-session-cookie.html?
Grüße aus Nürnberg
Tobias
Hallo judee,
Zuerst die anmelden.php:
<?PHP
sind da in der Datei wirklich Leerzeichen vor dem "<?php"? Dann mach die mal weg, das "<?php" muss _ganz_ am Anfang der Datei stehen, da dürfen auch keine Leerzeichen, Zeilenumbrüche, o.ä. sein. (Dein Fehlermeldung sagt dir übrigends, in welcher Datei und in welcher Zeile du vor session_start() was ausgibst...)
Grüße aus Nürnberg
Tobias