Problem mit Sessions
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
allererstes stehen
anhand
befehl
beispiel
benutzername
daten
expert
falsch echo
fehler
folgende fehler
gebieten
login
pawort
send
session
textausgabe
transitional
username
vielen dank
zwischenspeicher
-
Hallo!
Ich habe folgendes Problem: Ich habe ein Script geschreiben, in dem Sessions genutzt werden. Bei mir auf dem Rechner mit Xampp l?uft es auch, aber hier bei Lima kommen folgende Fehler:
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/webpages/lima-city/thoba/html/admin/index.php:12) in /home/webpages/lima-city/thoba/html/admin/index.php on line 47
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/webpages/lima-city/thoba/html/admin/index.php:12) in /home/webpages/lima-city/thoba/html/admin/index.php on line 47
Warning: Cannot modify header information - headers already sent by (output started at /home/webpages/lima-city/thoba/html/admin/index.php:12) in /home/webpages/lima-city/thoba/html/admin/index.php on line 51
Das Script sieht komplett so aus:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Login f?r den Admin-Bereich</title> </head> <body> <div align="center"> <h1>Login für den Admin-Bereich</h1> <form name="form1" method="post" action="<?php echo $PHP_SELF; ?>"> <p>Username:</p> <p> <input name="name" type="text" id="name"> </p> <p> </p> <p>Passwort:</p> <p> <input name="passwort" type="password" id="passwort"> </p> <p> <input type="submit" name="Submit" value="Login"> <input type="hidden" name="send" value="1"> </p> </form> <p> </p> </div> <?php if($_POST[send] == 1) { if($HTTP_POST_VARS['name'] == "" OR $HTTP_POST_VARS['passwort'] == "") echo "Sie haben kein Benutzernamen oder Passwort eingegeben"; else { mysql_connect("mysql.lima-city.de", "USER20218", "xxx"); mysql_select_db(DB595986944); $sql_1 = "SELECT user, passwort FROM admin WHERE id = '1'"; $result_1 = mysql_query($sql_1); while($row_1 = mysql_fetch_object($result_1)) { $db_user = $row_1->user; $db_passwort = $row_1->passwort; } $pass_md5 = md5($HTTP_POST_VARS['passwort']); if($db_user == $HTTP_POST_VARS['name'] && $db_passwort == $pass_md5) { session_start(); $_SESSION[user] = $HTTP_POST_VARS['name']; $_SESSION[passwort] = $pass_md5; header ('Location: admin.php'); } else { echo "Der Benutzername und/oder das Passwort ist falsch!"; echo "<br>Bitte versuchen Sie es erneut."; } } } else { echo "Bitte loggen Sie sich ein!"; } ?> </body> </html>
Wo liegt der Fehler, bzw. was muss ich alles ?ndern? Ich bin nicht so der Experte auf dem Gebiet.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hihi thoba!
Bist du sicher, dass dein Script auf deinem lokalen XAMPP-Server l?uft? Du gibst HTML-Quelltext aus, bevor du einen header()-Befehl absendest. Befehle wie header() oder setcookie() m?ssen immer vor jeglicher Textausgabe erfolgen. Wo das nicht m?glich ist, musst du die Textausgabe zwischenspeichern. Ich verwende dazu am Anfang des Quelltextes
ob_start()
und am Ende
ob_end_flush();
MfG
alopex -
<?php
ob_start();
// Das muss als allererstes stehen,
// ohne irgendwelchen Lehrzeichen oder
// Zeilenumbr?che
?>
<!DOCTYPE HTML PUBLIC "-//W3C//D...
...
</body>
</html>
<?php
ob_end_flush();
?> -
<?php
ob_start();
// Das muss als allererstes stehen,
// ohne irgendwelchen Lehrzeichen oder
// Zeilenumbr?che
?>
<!DOCTYPE HTML PUBLIC "-//W3C//D...
...
</body>
</html>
<?php
ob_end_flush();
?>
Perfekt! So geht es!
Vielen Dank @ alopex! -
Bei einer bestimmten Version des Apache-Servers war es m?glich, erst daten auszugeben, bevor man cookies setzt. Der IE und ?ltere Mozillas haben die dann sogar angenommen, alle anderen hab den Header als Text ausgegeben. Hab ich zumindest mal irgendwo gelesen (k?nnte hier in dem Forum gewesen sein).
-
session_start();
Must ganz oben stehen.
also vor
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
mfg biLo
EDIT: Achso sorry es l?uft ja schon. -
was ich dir auch noch raten w?rder
if($_POST[send] == 1) { if($HTTP_POST_VARS['name'] == "" OR $HTTP_POST_VARS['passwort'] == "")
ersetze es durch:
if(isset($_POST["Submit"])){ if($HTTP_POST_VARS['name'] == "" OR $HTTP_POST_VARS['passwort'] == "")
Dann brauchst du kein Hiddenfeld mehr und du kannst dir sicher sein, dass du wirklich keine Fehlermedlung wie zum Beispeil das in dem Array nichts drine ist bekommst -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage