cookie Problem

Wanna

Mitglied
Hallo,

ich habe vor, mein loginscript auf unserer Clanhomepage mit Cookies nachzurüsten!
Das funktioniert aber schon beim einloggen nicht, dess es kommt folgender Fehler:

Code:
Warning: Cannot modify header information - headers already sent by (output started at /home/www/web46/html/index.php:18) in /home/www/web46/html/daten/login.php on line 22

Warning: Cannot modify header information - headers already sent by (output started at /home/www/web46/html/index.php:18) in /home/www/web46/html/daten/login.php on line 23

Die Datei login.php wird von der index.php in den Mainbereich included!

Das hier steht in der login.php in Zeile 22 und 23:
Code:
setcookie("osd[nick]", $cookieinfo1, time() + 60*60*24*7*4);
setcookie("osd[pass]", $cookieinfo2, time() + 60*60*24*7*4);

ich weis jetzt nicht wo das Problem sein soll, könnt ihr mir helfen?
 
Hallo,
das kommt, weil du sicherlich vor dem Setzen des Cookies ein Text an den Browser ausgegeben hast. Dann sind die Headerinformationen bereits an den Server gesendet. Also einfach den Cookie vor allen anderen Dingen setzten und dein Problem sollte behoben sein.


Mit freundlichem Gruß
der_maiki
 
mhh, wo sende ich vorher bitte was an den browser? die daten vom loginformular werden in der includeten login.php überprüft und ausgewertet!

hier ist die login.php bis zur cookiestelle:

Code:
<?php
	include("scripts/connect.php");
	mysql_select_db("usr_web46_5");
	$userpass = md5($pass);

	$sql = "SELECT * FROM `$usertable` WHERE nick = '".$user."' LIMIT 1";
	$erg = mysql_query($sql);
	while($row = mysql_fetch_object($erg))
	{
		if($keks=="ja")
		{
			$cookieinfo1 = "".$row->nick."";		
			$cookieinfo2 = "".$row->pass."";
			setcookie("osd[nick]", $cookieinfo1, time() + 60*60*24*7*4);
			setcookie("osd[pass]", $cookieinfo2, time() + 60*60*24*7*4);
 
Wanna hat gesagt.:
mhh, wo sende ich vorher bitte was an den browser? die daten vom loginformular werden in der includeten login.php überprüft und ausgewertet!

hier ist die login.php bis zur cookiestelle:

Code:
<?php
	include("scripts/connect.php");
	mysql_select_db("usr_web46_5");
	$userpass = md5($pass);

	$sql = "SELECT * FROM `$usertable` WHERE nick = '".$user."' LIMIT 1";
	$erg = mysql_query($sql);
	while($row = mysql_fetch_object($erg))
	{
		if($keks=="ja")
		{
			$cookieinfo1 = "".$row->nick."";		
			$cookieinfo2 = "".$row->pass."";
			setcookie("osd[nick]", $cookieinfo1, time() + 60*60*24*7*4);
			setcookie("osd[pass]", $cookieinfo2, time() + 60*60*24*7*4);

Hallo nochmal,
da könnte vielleicht das Problem liegen. Wenn du die Datei includes und in der Hauptdatei aber schon den Header an den Server gesendet hast, dann kann es ebenfalls zu einen Fehler kommen. Also es darf meines Wissens nach auch in der Datei, die die Datei includen soll vorher was stehen.

Mit freundlichem Gruß
der_maiki
 
der_maiki hat gesagt.:
Hallo nochmal,
da könnte vielleicht das Problem liegen. Wenn du die Datei includes und in der Hauptdatei aber schon den Header an den Server gesendet hast, dann kann es ebenfalls zu einen Fehler kommen. Also es darf meines Wissens nach auch in der Datei, die die Datei includen soll vorher was stehen.

Mit freundlichem Gruß
der_maiki

jap, hat getan!
kannst du mir vllt. noch schnell sagen was diese 2 funktionen bewirken?
 
Ja, kann ich.
ob_start() startet den Output-Buffer, also alles was Du danach machst wird erstmal nicht ausgegeben sondern in den Buffer geschrieben.
ob_end_flush() gibt den Output-Buffer dann aus.

Der grosse Vorteil bei diesen Funktionen ist halt, dass Du irgendwo im Code Funktionen header() oder setcookie() nutzen kannst und sie halt funktionieren anstatt sich zu beschweren, dass der Header schon gesendet wurde.
 
Eine Frage zu diesem Thema:

Ich habe auch in eine Seite Cookies eingebaut. Ich habe die betreffende Datei in eine bestehend includet (mmir war auch bewusst, dass es normal dann zu einem Fehler kommen dürfte) und es klappte bei mir aufm Localhost (nutze Xammp) reibungslos ohne Mucken. Als ich die Seite dann auf meinen Server geladen habe, gab es dann die hier beschrieben Probleme.

Warum klapt es ohne Probs bei mir aufm Laptop mit Xampp aber aufm Server nit? Liegt das an Xampp?
 
Schau mal auf Deinem Laptop in die php.ini
Das Problem kann ohne ob_start() und ob_end_flush() umgangen werden wenn in der php.ini das Output-Buffering angestellt wird. Ich nehme an, dass das bei Dir der Fall ist und bei Deinem Provider nicht.
Es ist grundsaetzlich zu empfehlen den eigenen Webserver so restriktiv wie moeglich einzustellen um allen auf alles vorbereitet zu sein. Soll heissen: Safe Mode an, register_globals aus, Output Buffering aus. Wenn Dein Script dann funktioniert solltest Du eigentlich keine Probleme bei irgendeinem Hoster haben, egal welche Einstellungen er fuer diese 3 Werte waehlt.
 
Zurück