Problem mit dem header geschlossen 

Status
Für weitere Antworten geschlossen.

mortician

Registered +
Registriert
Juni 2005
Beiträge
715
Hi
Hab ein kleines Problemchen.
Ich habe eine index.php, die per GET verschiedenen Unterseiten included.
Diese Seiten kann man aber nur betrachten, wenn man User in einer SQL Datenbank ist (also eingeloggt ist).

Wird nun in einer unterseite der header verändert, kommt die Fehlermeldung, dass der Header schon gesetzt wurde.
Ist mir soweit klar.
Doch normalerweise umgehe ich das immer mit ob_start();
Geht aber nun irgendwie nicht.

index.php
PHP:
ob_start();
session_start();
include("../_config.php");
function adminlogincheck () {
if (isset($_SESSION['admin_username']) && isset($_SESSION['admin_passwort']) && isset($_SESSION['admin_rechte'])) {
$username = $_SESSION['admin_username'];
$passwort = $_SESSION['admin_passwort'];
} elseif (isset($_POST['submit'])) {
$username = $_POST['username'];
$passwort = md5($_POST['passwort']);
} else {
$username = 0;
$passwort = 0;
}
$result = mysql_query("SELECT * FROM $mysqltable_adminlist WHERE `username` LIKE '".$username."' AND `passwort` LIKE '".$passwort."'");
if (mysql_num_rows($result) == 1) {
$fetch = mysql_fetch_array($result);
$_SESSION['admin_username'] = $fetch['username'];
$_SESSION['admin_passwort'] = $fetch['passwort'];
$_SESSION['admin_id'] = $fetch['id'];
$_SESSION['admin_rechte'] = explode(",",$fetch['rechte']);
return true;
} else {
return false;
}
}
if (adminlogincheck()) {
echo "",
"",
"",
"
",
"";
if ($_GET[$get_show] != "userinfo" && $_GET[$get_show] != "hilfe" && $_GET[$get_site] != "squadpicedit") include($dir_inc_admin."/inc_navigation.php");

if (isset($_GET[$get_site])) {
$seite_include = $_GET[$get_site].".php";
if (file_exists($seite_include)) {
include($seite_include);
} else {
header("Location: index.php");
}
}
}
else {
echo "",
"",
"",
"",
"";

include($dir_inc_admin."/inc_loginform.php");
}
ob_end_flush(); 
?>

unterseite.php
PHP:
header("Location: url");
?>

Wird nun folgende Seite aufgerufen: index.php?site=unterseite
kommt folgende Fehlermeldung (die mir wohl durchleuchtend ist):
Code:
Warning: Cannot modify header information - headers already sent by (output started at /../../../index.php:28) in /../../../unterseite.php on line 2

Zeile 28 in index.php
Code:
if (adminlogincheck()) {
Würd mich über AW freuen.

´ gruß
 
hm...

soweit ich weis, und diese fehlermeldung kenne, hat es was damit zu tun, das du vor setzten des headers, eine ausgabe hast... da zählt ja alles dazu, auch leerzeilen usw...
es könnte sein, das also der css code, die ausschlaggebende sache ist.... nimm den ma raus, und include nur dann die datei die du willst.... also den css weg, sozusagen das ganze echo ""...

mfg mruniverse
 
Ja, ich vermute auch, dass es daran liegt. Aber du brauchst das ding ja nicht ganz rausnehmen. Es reicht ja, wenn du den include-Teil über die html-Ausgabe setzt.
 
ehm mit ob_start() werden alle Ausgaben in einem internen Puffer gespeichert.
Per ob_end_flush() wird der interne Puffer wieder ausgegeben.
Daher sollte es egal sein, ob vor dem header eine Ausgabe an den Clienten erfolgt.
Vielleicht hab ichs ja auch falsch angewandt... bin mir da aber eigentlich ziemlich sicher, dass es so richtig ist.

Referenz:
PHP: ob_start - Manual

´gruß

[edit]

hat sich erledigt.

´gruß
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben Unten