Fehlermeldung beim Setzen eines Cookies

timo1992

Mitglied
Hallo,
ich kriege es einfach nicht hin, einen Cookie setzen zu lassen, ohne dass ich eine Fehlermeldung bekomme.

index.php:
PHP:
<?php
// Sprachenmodul einbinden
require('lang/function.php');

// Sprachenmodul ausführen
language();
?>
<!DOCTYPE html>
[...]

lang/function.php:
PHP:
<?php
// Das ganze Sprachenmodul packen wir in eine nette Funktion
function language() {

	// Zuerst überprüfen wir, ob jemand eine Sprache ausgewählt hat (klick auf Flagge)
	if(isset($_GET['lang'])) {
		$lang = str_replace("/", "",$_GET['lang']); // Ausgewählte Sprache wird in Variable gespeichert

		// Evtl. alten Cookie löschen und neuen generieren
		setcookie('lang', '', time()-3600, '/'); // Cookie mit Zeitreise in die Vergangenheit, als es ihn noch nicht gab (beste Lösung, einen Cookie zu löschen)
		setcookie('lang',$lang, time()+31104000); // Neuer Cookie mit Haltbarkeit von ca. einem Jahr wird generiert

		require("lang/".$lang.".php"); // Sprachdatei wird geladen
	}

	// Wenn keine Sprache ausgewählt wird, überprüfen wir, ob schonmal eine Sprache ausgewählt wurde (im Cookie gespeichert)
	else {
		if(isset($_COOKIE['lang'])) {
			$lang = $_COOKIE['lang']; // Ausgewählte, im Cookie gespeicherte Sprache wird in Variable gespeichert
			
			require("lang/".$lang.".php"); // Sprachdatei wird geladen
		}
		
		// Falls keine Sprache im Cookie gespeichert ist und keine Sprache ausgewählt wurde, wird die englische Sprachdatei geladen
		else {
			require("lang/en.php");	
		}
	}

}
?>

Würde mich über Hilfe freuen, da ich echt nicht verstehe, wieso ich hier keine Cookies setzen kann, Whitespace oder so ist ja auch nicht vorhanden.

Gruß
Timo
 
Eventuell hast du irgendwie schon was an den Browser gesendet (Text, kann auch außerhalb des PHP-Codes sein), aber dann müsste eigentlich eine Fehlermeldung kommen. Oder du hast error_reporting(E_NONE); gesetzt!
 
Ne, das kann nicht sein, vor dem PHP Code in der index.php kommt ja nichts mehr und Error Reporting ist auch eingeschaltet...
 
Soweit ich weiß musst du die Seite neu laden, damit der Cookie gelesen werden kann oder nach dem Setzen nochmal direkt $_COOKIE["lang"] einen Wert zuweisen.
 
Ich verstehe gerade nicht ganz.. ist das Problem, dass du keine Fehlermeldung siehst obwohl ein Fehler vorzuliegen scheint? Dann mal in der php.ini schauen, ob display_errors auf On steht.

Oder bekommst du das Cookie nicht gesetzt und bekommst eine Fehlermeldung? Die wäre dann natürlich hilfreich ;)
 
Entschuldigung für das Unverständnis, ich kann kein Cookie setzen, ohne, dass ich eine Fehlermeldung bekomme, heißt, dass ich beim Aufruf der Seite eine Fehlermeldung erhalte, "Headers already sent" blabla, aber ich habe ja nichts vorher ausgeführt, daher möchte ich wissen, wie man den Cookie in diesem Fall setzen kann.
 
Tut mir Leid, aber die Fehlermeldung hat immer Recht ;) Du wirst also irgendetwas vorher ausgeben. Ansonsten schaue dir mal output buffering an.
 
Moin,

dass man nichts sieht, heisst nicht, dass da nichts ist :-)

Bspw. hat die lang/function.php, so wie du sie hier gepostet hast, nach dem schliessenden php-Tag noch einen Zeilenumbruch...dieser würde schon ausreichen, wenn er im Original auch existiert.

Die Fehlermeldung sollte eigentlich auch eine Info enthalten, wo diese störende Ausgabe erfolgt "Output started in File ... Line...."
 
Zurück