![]() |
PHP - Sessionverwaltung
Hi!
Ich bin noch ein ziemlicher PHP-Neuling und habe ein Problem mit der Sessionverwaltung. Hier die Codes: <html> <head> <title>Login</title> <?php include("includes/database.inc.php"); include("includes/session.inc.php"); ?> </head> <body> <form action="<?php echo $_SERVER[PHP_SELF]; ?>" method="post"> Name: <input type="text" name="formname"> Password: <input type="password" name="formpw"> Senden: <input type="submit" name="formsub"> </form> <?php connectdb("testdb"); if (!empty($_POST[formsub])) { $sql=mysql_query("SELECT * FROM user"); while ($pointer=mysql_fetch_assoc($sql)) { if ($pointer[user]==$_POST[formname] && $pointer[pw]==$_POST[formpw]) { setsession("testname","testvalue"); } } } disconnectdb(); ?> </body> </html> Hier die Datei database.inc.php: <?php $connection=mysql_connect("xxx", "xxx", "xxx"); function connectdb($database) { global $connection; mysql_select_db($database, $connection); } function disconnectdb() { global $connection; mysql_close($connection); } ?> Und hier die Datei session.inc.php: <?php function setsession($varname,$varvalue) { session_start(); session_name("Session"); $sessionid=session_id(); $_SESSION[$varname]=$varvalue; } ?> Wenn ich die Datei nun ausführe kommen folgende Meldungen: Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\Programme\xampp\htdocs\website\login.php:6) in C:\Programme\xampp\htdocs\website\includes\session .inc.php on line 3 Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Programme\xampp\htdocs\website\login.php:6) in C:\Programme\xampp\htdocs\website\includes\session .inc.php on line 3 session.path_name (oder so ähnlich) in der php.ini verweist auf das richtige Verzeichnis, und es wird auch ein Sessioncookie abgelegt. Wo liegt das Problem? Danke schon mal für die Antworten, sesselhocker |
hallo,
hatte mal das selbe problem. versuch mal, den code PHP-Code:
|
@servman: Danke für den Tipp, aber das hat leider auch nichts geholfen.
mfg, sesselhocker |
meines wissens nach mußt du eine session erzeugen bzw. aufrufen, bevor du daten auf den bildschirm schreibst, also noch vor <html> und allem.
|
Hab ich auch so gemacht, geholfen hats aber nicht...
mfg, sesselhocker EDIT: Könnte es vielleicht etwas damit zu tun haben, dass ich die Datenbankverbindung vorher aufbaue? |
Du führst das session_start() erst beim Aufruf deiner Funktion aus. Dies muss aber bereits vor der Anzeige des HTML Codes geschehen.
Dh. probiers mal so: <?php session_start(); ?> <HTML> usw. |
Ok, ich habs jetzt! Danke für den letzten Tipp, der war entscheidend. Ich hab zwar folgendes an den Anfang (vor <html>) gesetzt... :
<?php connectdb("testdb"); if (!empty($_POST[formsub])) { $sql=mysql_query("SELECT * FROM user"); while ($pointer=mysql_fetch_assoc($sql)) { if ($pointer[user]==$_POST[formname] && $pointer[pw]==$_POST[formpw]) { setsession("testname","testvalue"); } } } disconnectdb(); ?> ...aber das hat nicht geklappt. Jetzt hab ich es nur so gemacht, wie von T.dot beschrieben (session_start() ALLEINE am Anfang), und das hat geklappt. Danke für eure schnelle Hilfe! mfg, sesselhocker |
Alle Zeitangaben in WEZ +2. Es ist jetzt 21:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag