Cannot modify header information

bastiglasl

Erfahrenes Mitglied
Guten Morgen!

Wollte gerade meine PHP-Programmierung auf nen anderen Server portieren, bekomme hier aber folgende Fehlermeldung:

"Warning: Cannot modify header information - headers already sent by (output started at/srv/www/htdocs/webmail3/index.php:16) in /srv/www/htdocs/webmail3/index.php on line 35"

Kann ich da irgendwas machen?
 
Die Fehlermeldung besagt: output started at/srv/www/htdocs/webmail3/index.php:16 Also wurde durch den Code in Zeile 16 der index.php bereits das Senden eines Headers ausgelöst.

snuu
 
am besten ich poste mal die gesamte seite, da in zeile 16 ein css-style seht und der eigentlich nix damit zu tun haben sollte, oder?

PHP:
<?php require_once('Connections/webmail.php'); ?>
<? session_start(); ?>
<?php
mysql_select_db($database_webmail, $webmail);
$query_Login = "SELECT * FROM Login";
$Login = mysql_query($query_Login, $webmail) or die(mysql_error());
$row_Login = mysql_fetch_assoc($Login);
$totalRows_Login = mysql_num_rows($Login);
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Webmail - Login</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.Stil1 {font-size: larger}
-->
</style>
</head>
<body>
<?
if ($_POST[login] == "1") {
	//print_r($_POST);
	$Name = strtolower($_POST[Name]);
	$pwd = $_POST[pwd];
	$abfrage_query = "SELECT UserNr FROM Login WHERE Name = '$Name' AND pwd = '$pwd'";
	//echo $abfrage_query;
	$abfrage = mysql_query($abfrage_query, $webmail) or die(mysql_error());
	$row_abfrage = mysql_fetch_assoc($abfrage);
	if ($row_abfrage[UserNr] != "") {
		$_SESSION[UserNr] = $row_abfrage[UserNr];
		//print_r($_SESSION);
		header("Location: start.php");
	} else { echo "<h1>Kein Zugang</h1>"; }
	
	exit;
}
?>
<div align="center"><img src="images/priskon_logo.gif">
</div>
<form method="post">
  <p>Name: 
    <input type="text" size="10" name="Name"/>
</p>
  <p>Pwd.:
    <input type="password" size="10" name="pwd"/>
    <input type="hidden" name="login" value="1"/>
    <input type="submit" value="einloggen>>>"/>
    </p>
</form>

</body>
</html>
<?php
mysql_free_result($Login);
?>
Vielleicht wirds dadurch klarer...
 
Du darfst vor dem Aufruf der header-Funktion keine Ausgaben an den Browser senden. und wenn Du vom PHP- in den HTML-Modus wechselst, um HTML-Code auszugeben erfolgt logischerweise auch eine Ausgabe an den Browser. Also kannst Du den Header nicht mehr senden.

Umgehen kannst Du das Problem durch eine Ausgabepufferung:
--> [phpf]ob_start[/phpf]
--> [phpf]ob_end_flush[/phpf]
--> [phpf]ob_get_contents[/phpf]

snuu
 
Zurück