Fehler bei session_start();

Rollo

Erfahrenes Mitglied
Guten Abend Tutorials-Nutzer.

Ok mein Problem ist folgendes. Ich habe einen Userbereich und einen dazu gehörigen Adminbereich programmiert. Der Adminbereich wird mit der Session auf jeder Seite überprüft ob der Admin auch wirklich eingeloggt ist.

Aber nur bei einer PHP-Datei aus dem Adminbereich bekomme ich folgende Fehlermeldung:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at

Ich habe natürlich sofort rumgegooglet, da ich diese Fehlermeldung in keiner meiner bisherigen Adminbereiche hatte. Dort habe ich gelesen das nichts vor session_start(); stehen soll.
Ok dachte ich ganz simple. Doch nichts da. Der Fehler bliebt bestehen.

Hier der Code meiner checkuser.php
PHP:
<?php
session_start();
	if(!isset($_SESSION['user_id'])) {
		header ("Location: index.php");
	}
?>

Und hier der Code der Seite in der ich die Fehlermeldung erhalte.
PHP:
<?php
include"checkuser.php";
include "../mysql.php";
error_reporting(E_ALL);

@mysql_connect($HOST, $USER, $PASS) OR die("Die Verbindung konnte nicht hergestellt werden! Fehlermeldung: ".mysql_error());
	mysql_select_db($DB) OR die("Konnte Datenbank nicht finden! Fehlermeldung: ".mysql_error());
	
	$sql="	SELECT
			*
		FROM
			Farbe
		ORDER BY
			ID DESC;";

	$result= mysql_query($sql) OR die("Der Datensatz konnte nicht gefunden werden! Fehlermeldung: ".mysql_error());

	$sql2="	SELECT
		*
	FROM
		Kachel
	ORDER BY
		ID DESC;";
	
	$result2= mysql_query($sql2) OR dei("Der Datensatz konnte nicht gefunden werden");

?>

Also ich weis nicht weiter und hoffe ihr könnt mir helfen.

MfG Rollo
 
Gibst du davor evtl. Irgendwelche HTML Codes aus?
z.B. <html><head></head><body> und dann kommt erst dein <?php ... ?>?
 
nein, darauf habe ich extra geachtet, weil ich das irgendwann mal gehört habe das man dies nicht tun sollte. mmh. daran kann es nicht liegen.
 
Halli Hallo,
es darf zuvor KEIN einziges Byte an den Browser gesendet werden.
d.H. auch kein header();......

und in deiner 2. datei hast du bei $result2 bei "OR dei" einen fehler.. das muss "Or die" heißen...
 
Danke für den erkannten Tippfehler, natürlich die :). Mmh..heist das ich muss aus der checkuser die header löschen? Dann wird man doch aber nicht mehr umgeleitet wenn man nicht eingelogt ist. Oder?
 
In welchem Format speicherst du denn die Dateien? Bei UTF-8 werden vor das Dokument noch ein paar Bits gepackt... Ich hab da was passendes bei php.net gefunden...
Quelle: [phpf]header[/phpf]
Secondly, I found a weird solution: The website i'm building required Cyrillic type, so i encode the pages using UTF-8. The problem that happens is that UTF-8 sends information before the php tags, and therefore before the session_start(); which ultimately renders the session_start(); call ineffective.

The UTF-8 encoding sends a small chunk of information before anything. This is called BOM (byte order marks).

To ensure that they don't show up, you need to save your files with a UTF-8 encoding which bypasses BOM. BBEdit for the Macintosh with allow for this under the file encoding options.

To recap: In this instance and for my situation, UTF-8, no BOM will allow sessions to pass through the header( location:); redirect, or using PHP5.
 
Ja daran könnte es wirklich liegen. Es ist die einzigste Datei mit UTF-8 Formatierung. Shit. Ok ich teste mal rum. Das Problem ist nähmlich das das Gästebuch auch kyrillsche Zeichen anzeigen muss.
 
Zurück