Willkommen in der Webstatt Zum Webstatt Blog und Stories
Pyth0n Pyth0n am 26.06.07 13:53

Hallo,
ich schreibe gerade mein "erstes" Login Script und habe urplötzlich eine für mich nicht nach vollziehbare Fehlermeldung. Er behauptet er hätte schon was gesendet, aber ich wüsste nicht wo. Die zeigt er mir erst nach dem abschicken meiner Formulardaten an. Ich verstehe es nicht in frühren Versionen hat es tadellos funktioniert.

Fehlermeldung:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\Programme\XAMPP\htdocs\root\login\index.php:1) in C:\Programme\XAMPP\htdocs\root\login\index.php on line 20

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Programme\XAMPP\htdocs\root\login\index.php:1) in C:\Programme\XAMPP\htdocs\root\login\index.php on line 20

Warning: Cannot modify header information - headers already sent by (output started at C:\Programme\XAMPP\htdocs\root\login\index.php:1) in C:\Programme\XAMPP\htdocs\root\login\index.php on line 32

Code:
<?php
include "inc/global.php";

if($_POST['send'] && ($_POST['username'] && $_POST['passwort']))
{
$sql = "SELECT * FROM user WHERE name='".$_POST['username']."' AND passwort=md5('".$_POST['passwort']."')";

$ergebnis = mysql_query($sql) OR die(mysql_error("Fehler! Es konnte keine Verbindung hergestellt werden!"));

if(mysql_num_rows($ergebnis) == 1)
{
$row = mysql_fetch_row($ergebnis);

if($row[4] == 0) // Prüft ob der User gesperrt ist
{
$sql = "UPDATE user SET eingeloggt='1' WHERE name='".$_POST['username']."' AND passwort=md5('".$_POST['passwort']."')";

mysql_query($sql) OR die(mysql_error("Fehler! Es konnte keine Verbindung hergestellt werden!"));

session_start();

$_SESSION['username'] = $_POST['username'];
$_SESSION['passwort'] = $_POST['passwort'];

if($_POST['cookie'] == true)
{
// Cookie setzen
setcookie("username",$_SESSION['username'],strtotime(" +1 year"));
setcookie("passwort",$_SESSION['passwort'],strtotime(" +1 year"));
}

header("Location: test.php");
exit;
}
else
{
echo "<span style=\"color: RED;\">Ihr Account wurde gesperrt!</span>";
}
}
else
{
echo "<span style=\"color: RED;\">Ihre Daten sind nicht korrekt.</span>";
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Index</title>
<link rel="stylesheet" href="css/global.css" type="text/css" />
</head>

<body>
<form action="index.php" method="post">
<fieldset style="width:245px;">
<legend>Login</legend>
<label>Username:</label>
<input name="username" type="text" size="20" value="Test" />
<br />
<label>Passwort:</label>
<input name="passwort" type="password" size="20" value="test" />
<br />
<input name="cookie" type="checkbox" value="" />Angemeldet bleiben? (Cookie)
<br />
<input name="send" type="submit" value="Senden" /> <input name="reset" type="reset" value="Zurücksetzen" />
<br />
<a name="" href="regestrieren.php" title="Regestrieren">Regestrieren</a> | <a name="" href="" title="Passwort vergessen?">Passwort vergessen?</a>
</fieldset>
</form>
</body>
</html>


Ich hoffe ihr könnt mir sagen wo es dran liegt, weil ich habe auch kein überflüssiges Lerzeichen oder so entdeckt oder ich bin einfach nur blind.

Gruß, Pyth0n :)

netcup.de Warum gibt es hier Werbung?
Pyth0n Pyth0n am 26.06.07 14:19

@Snake: Danke für denn Tipp mit dem Hex-Editor. Da habe ich den Fehler gesehen, war so ein komisches undefiniertes Wirrwah. Danke sehr. :)

Gruß, Pyth0n :)

tnY am 26.06.07 15:10

wäre der fehler net nur gewesen das du die session erst auf line 20 beginnst?

lg

Rebel4s Rebel4s am 26.06.07 15:34

Jo, session muss beginnen vor einer ausgabe

nuit nuit am 26.06.07 16:34

Quote
Original von tnY
wäre der fehler net nur gewesen das du die session erst auf line 20 beginnst?

lg

der fehler war, dass bestimmte charsets in editoren komische zeichen davormachen...die dann als erstes gesendet werden...

wenn du keine ausgabe hast...kannst du auch erst in zeile 300 die session beginnen...es darf halt noch nichts vom content gesendet werden...und da war halt so ein zeichen, dass nicht sichtbar

-> Tipp: wie auch vorhin genannt: Hex-Editor macht sowas sichtbar

Pyth0n Pyth0n am 26.06.07 18:44

Wie gesagt, der Fehler war der Murks der am Anfang vor <?php nicht sichtbar stand und das mit dem "session_start();" müsste ich sowieso ändern, weil snst beisst es sich mit anderen Dingen später. ;) Danke nochmal an Snake und die Anderen.

Gruß, Pyth0n :)

hoffie hoffie am 01.07.07 14:32

Quote
Original von nuit
der fehler war, dass bestimmte charsets in editoren komische zeichen davormachen...die dann als erstes gesendet werden...

Wie z.B. UTF8 mit BOM (Byte Order Mark)

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt