PHP-session funktioniert nicht

hallo, liebe Community! Ich hoffe, jemand kann mir weiterhelfen. Der bplaced-Support will schon nicht mehr.

Auf einigen Geräten werden meine Cookies nicht übermittelt, sodass passwortgeschützte Seiten nicht angezeigt werden.

Warnung im Browserfenster wie folgt:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent (output started at […].php on line 5
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at […].php on line 5

Die zweite Warnung wird auf allen Geräten auf allen Unterseiten angezeigt, allerdings funktionieren sie dann trotzdem.
Geräte auf denen die Cookies nicht gesendet werden: Ein 1 Jahr altes Android-Smartphone mit Chrome und ein Windows-8.1-Rechner mit Firefox (ich hatte zuerst vermutet, dass der Netzwerk-Admin Cookies blockiert hat, aber auf dem Smartphone tritt jetzt der gleiche fehler auf). Auf meinem heimischen Windows-7-Rechner mit Firefox funktioniert es, wird daher eher nicht am Browser liegen.

Relevanter Code:

Hauptseite, hiervon sind die Fehlermeldungen zitiert:

[code]<?php
// Inkludedateien
include(“include/config.php”);

session_start();

if(! isset($_SESSION[“login”]))
{
die(“Sie haben keine Berechtigung zum Zugriff auf diese Inhalte!”);
}

$titel = “Privatheim”;
$out = “” ;
[/code]

Template:

[code]

<?php echo $out; ?>
Ich bin der Fuß.
[/code]

Ich habe den Code schon nach White Spaces durchsucht und in Notepad++ geschaut, dass ich auch wirklich UTF8 ohne BOM eingestellt habe, aber nichts relevantes gefunden. Ich habe auch schon versucht, die Session am Beginn der template.php zu starten, sogar in ob_start() und ob_flush() (oder so) verschachtelt, aber das hat genauso wenig funktioniert.

Auf dem heimischen XAMPP funktioniert natürlich alles!

<?php session_start(); ?>

Muss immer vor Ausgabe gesetzt sein.
Setze auf all Deinen Seiten dann sollte schon mal am Anfang der Seiten dann hast Du Problem 1 gelöst.
Da du deine include(“include/config.php”); Nicht Zeighst sehe ich nicht welches Problem Du mit Cookies hast

Danke für die Antwort! Meine config.php enthält nur Zuweisungen für die Zugangsdaten der Datenbank(die werte habe ich fürs forum unkenntlich gemacht):

<?php $host = "localhost"; $user = "[...]"; $passwd = "[...]"; $dbname = "[...]"; $mail = "[...]"; ?>

Habe die Reihenfolge trotzdem mal geändert:
Hauptseite:

[code]<?php
session_start();
?>

<?php // Inkludedateien include("include/config.php"); if(! isset($_SESSION["login"])) { die("Sie haben keine Berechtigung zum Zugriff auf diese Inhalte!"); } [/code] login-seite: (hier war session_start ursprünglich unterhalb des Kommentars "Session starten") [code]<?php session_start(); ?> <?php // Inkludedateien include("include/config.php"); $titel = "Login"; $out =$unam=$passw=""; $fehler = 0; //-------------------------------------Fehler oder erster Aufruf if(isset($_POST["aktion"]) == false || $fehler == 1) { $out .=<<<FORMULAR
Benutzername:
Passwort:

FORMULAR; } else if(isset($_POST["aktion"])) { $unam = $_POST['unam']; $passw = $_POST['passw']; // Passwort-Hash aus Datenbank auslesen $link = mysqli_connect($host,$user,$passwd,$dbname); mysqli_set_charset($link,"utf8"); $sql = "SELECT nutzer,pwhash,versuche FROM nutzerdaten WHERE `nutzerdaten`.`nutzer`='$unam'"; $result = mysqli_query($link,$sql) or die(mysqli_error($link)); $dsfeld = mysqli_fetch_assoc($result); if($dsfeld["versuche"] <= 10) { //---------------------------------------hash in Variable ablegen $hash = $dsfeld["pwhash"]; if( password_verify ($passw,$hash) ) { $out .= "Login erfolgereich.
"; // Session starten //session_start(); $_SESSION["test"] = "Session-Array: Test erfolgreich
"; $_SESSION["heute"] = date("d.m.Y"); // Login war erfolgreich $_SESSION["login"] = true; $out .= $_SESSION["test"];[/code] Meine template.php wird auf jeder Seite ganz am Ende wie folgt eingebunden: [code]// Template einbinden include("template/template.php"); ?>[/code]

Das einzige, was sich durch die vorgenommenen Änderungen getan hat, ist, dass ich schon vor dem Login Fehlermeldungen bekomme. Ich finde es ohnehin sehr verwirrend, dass das Problem nicht auf allen Geräten auftritt - könnte das vielleicht am Zeichensatz liegen? Das wäre der einzige Unterschied, den ich mir zwischen zwei Firefoxbrowsern vorstellen könnte.

edit: Ich habe schon geschaut, ob ich meine Skripte in Notepad++ auf “UTF8 (ohne BOM)” setzen muss, aber der Zeichensatz scheint schon richtig eingestellt zu sein.


edit2: Habe den Zeichensatz noch einmal nachgeprüft, es war tatsächlich NICHT auf “UTF8 (ohne BOM)” eingestellt! Da ist wohl irgendwo eine Änderung verloren gegangen.

Es funktioniert jetzt tatsächlich alles, ohne Fehlermeldungen!