[PHP + MySQL] Was bedeudet diese Fehlermeldung

Energy_Master

Lt. Commander
Registriert
Feb. 2003
Beiträge
2.029
Hab ne Seite mit Loginsystem welches über Sessions läuft. Auf meinem Notebook mit Apache läuft die Seite super, wenn ich sie dann auf meinen Server bei Strato lade kommt diese Fehlermeldung: Cannot send session cache limiter - headers already sent

Was kann das sein? Kann mir das nich erklären.
Ich hab vor jede zu schützende Seite nen "Check" gehangen, der test ob man eingelogged is, falls nich wird man zur login seite geleitet.
 
Hi,
wahrscheinlich benutzt du eine Cookie-basierte Session-Lösung. Daher mußt du vor allen anderen Ausgaben die Session starten. Siehe hier.

MfG, Gobble-G
 
Diese Login System ist aber ein fertiges gewesen, welches ich nich selbst programmiert habe. Auf meinem Notebook läuft es ja auch ohne Probleme. Kann mir das nich erklären.
 
Vielleicht wird auf deinem Lappi aber die Session-ID nicht über Cookies, sondern über die URL weitergereicht... Dann würde das eben gehen, selbst wenn die Session später im Skript gestartet wird.
 
Der Strato Server ist anders konfiguriert als dein Apache.
Vermutlich wird im Login Script ein Umleitung nach dem Login gemacht.
Irgendwo im Sript wird sowas wie ....header("Location: http://www.example.com/");.....
benutzt.
Das ist schlecht gelöst. Funktioniert aber normalerweise.
Vielleicht hast Du noch eine HTML drumrum gebastelt. Das geht nicht.
Vor diesem header.... Befehl darf nichts anderes stehen.

cyber_riddle
 
Danke cyber_riddle das klingt sehr nach dem Problem mit dem Script. Ich hoffe ich bekomm das hin.

Was is zubeachten, außer das vor dem HEADER Teil nichts stehen darf?

Ich poste euch gleich mal die Scripte:
ADMIN.PHP:
<?PHP
$include = 1;
$needed_rang = 2;
include("protection.php");

echo "Hallo ".$user['name'].".<br>";
echo "Willkommen im internen Bereich.";
?>

Protection.php:
<?PHP
session_start();
//Session wird gestartet

include("inc/tables.php"); //Die Tabellen werden geladen
include("functions/mysql_get_settings.php"); //MySql-Funktion zum laden der Einstellungen
include("functions/mysql_user_check.php"); //MySql-Funktion zum pruefen des Benutzernamens und des Passworts
include("functions/mysql_get_row.php"); //MySql-Funktion zum laden einer "row" aus einer MySql Tabelle

$page = mysql_get_settings("page"); //Wir laden die Pagenamen in die Variable $page
$error = mysql_get_settings("error"); //Wir laden die Fehlermeldungen in die Variable $error
$check = mysql_user_check($login["name"], $login["pw"]); //Wir testen ob die Benutzereingaben mit einen Eintrag in der MySql Tabelle uebereinstimmen

if($check["status"] == "1"){ //Wenn der "userckeck" erfolgreich war...
if($include != "1"){ // Wenn diese Datei nicht includiert wurde (normalerweise beim Login)
$user = mysql_get_row($table["users"], "*", "WHERE name = '".$login["name"]."'"); //Wir laden die Daten des eingelogten Benutzers in eine Variable
session_register("login"); //Wir speichern die beim Login eingegebenen Daten in unsere Session
session_register("user"); // Wir speichern die $user Variable
header("Location: $page[forwarding]"); //Wir leiten auf die Standartseite weiter
}else{
if($user['rang']>$needed_rang && $user['rang']!="$needed_rang"){
header("Location: $page[error]?errormsg=rang"); //Wir leiten auf die Fehlerseite weiter
}
}
}else{ //Wenn der "usercheck" nciht erfolgreich war..
header("Location: $page[login]?fehlerid=$check[fehler]"); //Wir leiten auf die Loginseite zurueck
}
?>

Das is die Standart Admin-Datei, ich habe für mich noch eine angepasste. Aber die originale geht auch nich.

Normalerweiße braucht man in jede zu schützende Seite nur folgendes einbinden:
$include = 1;
$needed_rang = 2;
include("protection.php");

Dann wird imer geprüft, ob man schon eingelogged is, fals nich gehts zur Login seite.

Bitte helft mir, möchte/muss de Seite bis Sonnabend fertig haben.
 
Zuletzt bearbeitet:
hi,

schreib einfach an den Anfang (wirklich ganz oben, die erste Zeile ;) ) deiner Seite wo der fehler verursacht wird

PHP:
<?php ob_start(); ?>

und an das Ende der Seite (wirklich in allerletze Zeile) ;)

PHP:
<?php ob_end_flush(); ?>


damit sollte dein problem gelöst sein ! Wenn nicht, einfach nochmal schreiben

mfg

hemorieder
 
Das hilft ein bissl weiter, denn wenn ich den php-Code von hemorieder einfüge und dann die Seite admin.php aufrufe werde ich automatisch zum einloggen weiter geleitet, was auch richtig ist. Wenn ich mich dann einlogge kommt wieder der fehler, obwohl ich die Code-Zeilen in jeder datei drin hab. Ich versteh das nich.

Oder kann mir jemand ein besseres Loginscript empfehlen? Brauch eins mit mehreren Usern.
 
Zurück
Oben