Willkommen in der Webstatt
User-1 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ß, xyz-172 :)

netcup.de Warum gibt es hier Werbung?
User-1 am 26.06.07 14:19

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

Gruß, xyz-172 :)

User-2 am 26.06.07 15:10

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

lg

User-3 am 26.06.07 15:34

Jo, session muss beginnen vor einer ausgabe

User-4 am 26.06.07 16:34

Quote
Original von xyz-219
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

User-1 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. ;) xyz-48ke nochmal an xyz-193 und die Anderen.

Gruß, xyz-172 :)

User-5 am 01.07.07 14:32

Quote
Original von xyz-161
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