headers allready sent

warum steht bei folgendem Code

[php]

<?php error_reporting(E_ALL); require_once("config.ini.php"); $passwort = addslashes($_POST['pwd']); $loginname = addslashes($_POST['name']); if(empty($loginname)) $fehler .= "Kein Name eingegtragen\n"; if(empty($passwort)) $fehler .= "Kein Passwort eingetragen\n"; $st = mysql_fetch_object(mysql_query("SELECT * FROM users WHERE name = '".$loginname."'")); $status = $st->status; if($status == "2") $fehler .= "Account ist gesperrt!\n"; if(empty($fehler)) { $verbindung = mysql_fetch_object(mysql_query("SELECT * FROM users WHERE name = '".$loginname."'")); $passwd = $verbindung->passwd; $usr = $verbindung->name; $rank = $verbindung->rank; $email = $verbindung->email; $id = $verbindung->id; $pass_md5 = md5($passwort); if($passwd == $pass_md5) { $_SESSION["user_session_id"] = session_id(); $_SESSION["user_nickname"] = $usr; $_SESSION["rank"] = $rank; $_SESSION["email"] = $email; $_SESSION["pwd"] = $passwd; $_SESSION["uid"] = $id; setcookie("pwd", $passwort, time()+1000000); setcookie("name", $usr, time()+1000000); header("Location: index.php"); } else $fehler .= "Passwort falsch\n"; } else { header("Location: index.php?error=$fehler"); } ?>

[/php]
immer

[code]

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\otiuscms\login.php:5) in C:\xampp\htdocs\otiuscms\login.php on line 34

[/code]und wenn ich das richtige angebe (richtiger name und richtiges pw) funktioniert es. und wenn ich eine falsche angabe mache leitet er nicht weiter

EDIT:

Die config.ini.php Datei sieht volgendermaßen aus:

[php]

<?php session_start(); $host = "localhost"; // Host (normalerweise localhost) $user = "xyz"; // Username für Datenbank $pass = "xyz"; // Passwort für User $database = "xyz"; // Datenbanknahme $dz = mysql_connect($host, $user, $pass); mysql_select_db($database, $dz); ?>

[/php]

weil du schon eine ausgabe hattest bevor du header(„Location: index.php“); benutzt

und die wäre?

steht doch in der Fehlermeldung…

headers already sent by (output started at C:\xampp\htdocs\otiuscms\login.php:5) in C:\xampp\htdocs\otiuscms\login.php on line 34

das wäre diese Zeile:

[PHP]

$passwort = addslashes($_POST[‚pwd‘]);

[/PHP]

und was wird da ausgegeben :?:

zeig ma das ganze loginscript

das ist alles

sieht das nur hier aus oder hast du auch im originalscripts ne leer zeile

[PHP]

<?php[/PHP] [PHP]<?php[/PHP] wenn ja, mach ma die leeren zeilen weg

jetzt hab ich die leerzeile raus, und das selbe steht da immernoch nur mit line 4

Mach doch mal error_reporting() weg und teste nochmal. Wird nur eine Fehlermeldung ausgegeben?

mfg

ja wird es. Und wenn ich falsche daten angebe, wird garnichts ausgegeben. es soll aber weitergeleitet werden :expressionless:

Es steht auf jeden Fall fest, dass der Fehler hervorgerufen wird, weil eine Ausgabe vor dem location header stattfindet.

Includierst du die Datei evtl noch in eine andere Datei hinein?

Naja wie dem auch sei, du kannst ja zur not auch eine Ausgabepufferung benutzen

nein, wie schon gesagt, ich benutze ein und dieselbe Datei. Die wird nicht includiert und includiert nur die config datei, die auch nichts ausgibt. wenn man eine falsche Angabe macht, trifft ja eigentlich die untere Bedingung zu, oder? dann müsste er ja wohl weiterleiten. ich weiß echt nicht, wo der Fehler liegt :-?

benutz einfach ne ausgabepufferung, spätestens dann muss es dann gehen

ok, hab das problem jetzt glöst, dass wenn man was falsches eingibt, dass man dann auch weitergeleitet wird. Nur wenn man bei beiden Feldern garnichts eingiebt steht da:

[B]Warning[/B]:  Header may not contain more than a single header, new line detected. in [B]C:\xampp\htdocs\otiuscms\login.php[/B] on line [B]35[/B]

Der Code sieht volgendermaßen aus:
[PHP]

<?php require_once("config.ini.php"); $passwort = addslashes($_POST['pwd']); $loginname = addslashes($_POST['name']); if(empty($loginname)) $fehler .= "Kein Name eingegtragen\n"; if(empty($passwort)) $fehler .= "Kein Passwort eingetragen\n"; $st = mysql_fetch_object(mysql_query("SELECT * FROM users WHERE name = '".$loginname."'")); $status = $st->status; if($status == "2") $fehler .= "Account ist gesperrt!\n"; if(empty($fehler)) { $verbindung = mysql_fetch_object(mysql_query("SELECT * FROM users WHERE name = '".$loginname."'")); $passwd = $verbindung->passwd; $usr = $verbindung->name; $rank = $verbindung->rank; $email = $verbindung->email; $id = $verbindung->id; $pass_md5 = md5($passwort); if($passwd == $pass_md5) { $_SESSION["user_session_id"] = session_id(); $_SESSION["user_nickname"] = $usr; $_SESSION["rank"] = $rank; $_SESSION["email"] = $email; $_SESSION["pwd"] = $passwd; $_SESSION["uid"] = $id; setcookie("pwd", $passwort, time()+1000000); setcookie("name", $usr, time()+1000000); header("Location: index.php"); } else { $fehler .= "Passwort falsch\n"; header("Location: index.php?error=$fehler"); } } else { header("Location: index.php?error=$fehler"); } ?>

[/PHP]
Sorry wenn ich nerve, aber das ist wichtig:roll:

lade die dateien mal mit der dateiendung .phps hoch und zeige se uns :slight_smile:

ok:
http://www.pilum-aureum.de/login.phps
und
http://www.pilum-aureum.de/config.ini.phps

hoffe das hilft