• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Header??

wagi

User
Warning: Cannot add header information - headers already sent by (output started at D:\apache\htdocs\login\login.php:2) in D:\apache\htdocs\login\login.php on line 15


NE lustige Fehlermeldung - aber was muss ich da machen??
In Zeile 15 steht nur ne setcookie anweisung!
 
Cookies können (dürfen) nur gesetzt werden, wenn noch keinerlei output rausgegeben wurde. Du hast wahrscheinlich irgendwo vorher schon eine Ausgabe an den Browser drin stehen!
 
Und was heisst das genau??

also ich hab vorher n Formular, Daten werden da schon gesendet.
Guckst du hier.
PHP:
<?
echo "<HTML><BODY>";
if (!isset ($smvfreudenhain) || $smvfreudenhain == 0){
	if (!isset ($logcheck) || $logcheck == 0){
		echo "<TABLE WIDTH=\"150\" BORDER=\"0\" CELLSPACING=\"0\" CELLPADDING=\"0\">";
  		echo "<FORM NAME=\"login\" METHOD=\"post\" ACTION=\"login.php\"><TR><TD ALIGN=\"CENTER\">";
		echo "<INPUT TYPE=\"hidden\" NAME=\"logcheck\" VALUE=\"1\">";
		echo "<INPUT TYPE=\"text\" NAME=\"id\" VALUE=\"Name\"></TD></TR>";
		echo "<TR><TD ALIGN=\"CENTER\"><INPUT TYPE=\"text\" NAME=\"pwd\" VALUE=\"Passwort\"></TD></TR>";
		echo "<TR><TD ALIGN=\"CENTER\"><INPUT TYPE=\"submit\" NAME=\"login\" VALUE=\"login\"></TD></TR></FORM></TABLE>";
	}else if (isset ($logcheck) || $logcheck == 1){
		$trenn = "§";
		echo "$id | $pwd <BR>";
		$identity = $id.$trenn.$pwd;
		setcookie("smvfreudenhain",$identity, time()+3600, "", "", 0);
		echo "Cookie erfolgreich gesetzt. <BR> <a href=\"login.php\">zurück</a>";
	}else{
		echo "Unbekannter Fehler - Cookie wurde nicht gesetzt.";
	}
}else if (isset ($smvfreudenhain) || $smvfreudenhain != 0){
	echo "Sie wurden erfolgreich eingeloggt.<BR>Ihre Daten<BR>";
	echo $smvfreudenhain;
	echo "<BR>";
	$arr = explode("§",$smvfreudenhain);
	$id = $arr[0];
	$pwd = $arr[1];
	echo $id;
	echo "<BR>";
	echo $pwd;
}else{
	echo "Fehler unbekannt";
}
echo "</BODY></HTML>";
?>
 
HTTP Header Informationen können protokollbedingt nur im Kopf stehen... dazu zählen auch Cookies!
Wenn also auch nur ein Leerzeichen oder was auch immer durch ein PHP Skript ausgegeben wurde, dann kann der Header nicht mehr modifiziert werden. Entweder Cookie am Anfang setzen oder gar nicht....
 
wie meinst Du das??
solange die Echos davor kommen ist es egal was Du machst... die Headers sind ab dem ersten echo nicht mehr erreichbar.....

Du kannst allerdings zunächst mal alles in eine Variable $output stopfen und erst am Schluß ein echo $output machen, das würde dann gehen....
 
Alternativ kann man mein ich output-buffering von php verwenden, das zieht allerdings die Performance nach unten.

Aber schön das es sich schon erledigt hat :D
 
nö, doch nicht.
Also ich hab das ganze über externe Dateien gelöst, dann wird ein Cookie gesetzt und alles ist in Ordnng - wenn ich dann allerdings überprüfe ob das cookie vorhanden ist, gehts nicht. :(

www.kfz-geier.de/logon/login.php
Der Code wurde nicht recht verändert bis auf dass

$trenn = "§";
$identity = $id.$trenn.$pwd;
setcookie("smvfreudenhain",$identity, time()+3600, "", "", 0);
echo "Cookie erfolgreich gesetzt. <BR> <a href=\"login.php\">zurück</a>";

nun in einer extra Datei steht.

Dann wieder zurück

<?
echo "<HTML><BODY>";
if (!isset ($smvfreudenhain) || $smvfreudenhain == 0){
echo "<TABLE WIDTH=\"150\" BORDER=\"0\" CELLSPACING=\"0\" CELLPADDING=\"0\">";
echo "<FORM NAME=\"login\" METHOD=\"post\" ACTION=\"login.php\"><TR><TD ALIGN=\"CENTER\">";
echo "<INPUT TYPE=\"hidden\" NAME=\"logcheck\" VALUE=\"1\">";
echo "<INPUT TYPE=\"text\" NAME=\"id\" VALUE=\"Name\"></TD></TR>";
echo "<TR><TD ALIGN=\"CENTER\"><INPUT TYPE=\"text\" NAME=\"pwd\" VALUE=\"Passwort\"></TD></TR>";
echo "<TR><TD ALIGN=\"CENTER\"><INPUT TYPE=\"submit\" NAME=\"login\" VALUE=\"login\"></TD></TR></FORM></TABLE>";
}else if (isset ($logcheck) || $logcheck == 1){0);
echo "Cookie erfolgreich gesetzt. <BR> <a href=\"login.php\">zurück</a>";
}else{
echo "Unbekannter Fehler - Cookie wurde nicht gesetzt.";
}
}else if (isset ($smvfreudenhain) || $smvfreudenhain != 0){
echo "Sie wurden erfolgreich eingeloggt.<BR>Ihre Daten<BR>";
echo $smvfreudenhain;
echo "<BR>";
$arr = explode("§",$smvfreudenhain);
$id = $arr[0];
$pwd = $arr[1];
echo $id;
echo "<BR>";
echo $pwd;
}else{
echo "Fehler unbekannt";
}
echo "</BODY></HTML>";
?>

Auf eventuelle Parsingfehler ned achten, da es eigentlich das selbe ist, aber wie gesagt nur in 2 Teile geteilt, das Scipt funktioniert, bis auf die Tatsache dass beim Überprüfen ob $smvfreudenhain ungleich 0 oder nicht vorhanden ist, ein Fehler gemacht wird. Trotz dass das Cookie gesetzt wird false zurückgegeben und das Formular wieder angezeigt!
 
nur mal so ne Idee...

Wie wärs denn, wenn Du Dir das ganze Cookie Gedönz sparst und lieber vernünftige Sessions verwendest??
 
hui, hat geklappt - was ein bisschen Clear Tempory Internetfiles nicht alles ausmacht :)
Is aber trotzdem mehr als ungewiss.

Hm, Sessions - gute Idee, die gehören zu der Sache die ich noch nie so ganz kapiert habe, sowohl der Vorteil der Sessions als auch die Funktionen der Sessions - bitte um Aufklärung, und nem guten Tutorial :)
 
hmm also zu Sessions hab ich jetzt kein Tut parat.... und das jetzt alles zu beschreiben bin ich grad zu müde ;)
 
phä - is ja schon spät, aber na gut :)
Also die grundlegenden Funktionen weiss ich ja, ich weiss dass ich den Sessions Namen geben kann und ich weiss wie ich sie initieren kann ich weiss auch dass ich per session_register Variablen in eine aktuelle Session hinzufügen kann.

Was ich nicht weiss ist wie ich diese registrierten Daten nutzen kann, bzw. welche Vorteile Sessions im allgemeinen haben.
Ich hab zur Zeit nur nen mistigen Puretec Server zur Verfügung und da hab ich leider keinen Einfluss, wie die Daten übertragen werden und da nehm ich mal an die werden Standartmäßig per Cookie und nicht per URL übertragen, also welche Vorteile haben Sessions denn dan??
 
Nochn kleiner Nachtrag: Muss ich auch bei den Sessions die Befehle für Registrierung und Initialisierung ganz am Anfang schreiben oder dürfen die Befehle auch nach echo oder ähnlichen Befehlen stehen??
 
Die Initialisierung einer Session muß logischerweise vor allen Ausgaben passieren, weil dabei ja möglicherweise ein Cookie gesetzt werden muß und das geht ja nur im Header....

Das Registrieren der Variablen sollte aber jederzeit gehen...
 
Zurück
Oben