Webstatt.org - Community seit 2006 - 2012 (2024?)

Login Script -> Fehlermeldung

Avatar user-282
26.06.2007 11: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']."'zwinkern";

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

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']."'zwinkern";

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

session_start();

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

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

header("Location: test.php"zwinkern;
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ß, user-282 lächeln

zwinkern Don't Panic! - Die Antwort lautet: 42
Avatar user-282
26.06.2007 12:19

@Snake: user-158ke für denn Tipp mit dem Hex-Editor. Da habe ich den Fehler gesehen, war so ein komisches undefiniertes Wirrwah. user-158ke sehr. lächeln

Gruß, user-282 lächeln

zwinkern Don't Panic! - Die Antwort lautet: 42
user-329
26.06.2007 13:10

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

lg

Avatar user-287
26.06.2007 13:34

Jo, session muss beginnen vor einer ausgabe

Avatar user-271
26.06.2007 14:34

Original von user-329
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

#!/bin/bash
traurig){ neutral:& };:
Avatar user-282
26.06.2007 16: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. zwinkern user-158ke nochmal an user-303 und die Anderen.

Gruß, user-282 lächeln

zwinkern Don't Panic! - Die Antwort lautet: 42
Avatar user-194
01.07.2007 12:32

Original von user-271
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)