Warning: Cannot modify header information - headers...
php_beginner
- php
Hi
Ich bekomme bei der Bearbeitung einer php Seite folgenden Fehler:
Warning: Cannot modify header information - headers already sent by //...path
Beim Googlen habe ich erfahren, dass, bevor ich eine header Deklaration mache, oder Cookies setze kein echo erfolgen darf.
Leider sehe ich kein echo vor diesen Ausfuehrungen, dennoch kommt der Fehler... Woran liegt das ?
Im html Teil sind noch weitere PHP Teile fuer die Vorbelegung der text values implementiert. Beim Auskommentieren aendert sich aber nichts, daher kann es daran nicht liegen.
//________________________________adminportal.php___________________
<?php
session_start();
?>
<?php
include('password.php');
$_SESSION['admin'] = false;
if (isset($_GET['send']))
{
if (isset($_GET['user']) && isset($_GET['pass']))
{
if (strcmp($_GET['user'],$admin_name)==0 && strcmp($_GET['pass'],$right_password)==0)
{
$_SESSION['admin'] = true;
setcookie('LoginName',$_GET['user'], time()+ 60*60*24*7*4);
setcookie('Password',$_GET['pass'], time()+ 60*60*24*7*4);
header('Location: administration.php?' . urlencode(session_name()) . '=' . urlencode(session_id()));
}
else echo 'Incorrect Login Information.'.'<br>';
}
}
?>
<html>
<head>
<title>login</title>
</head>
<body>
<center>
<br><br><br><br><br><br><br><br><br><br><h1>Admin Login</h1>
<br><br>
<form action="adminportal.php" method="GET">
<table border=0>
<tr>
<td>User:</td>
<td><input type="text" name="user" value="<?php
if (isset($_COOKIE['LoginName']))
echo htmlspecialchars($_COOKIE['LoginName']);
else
echo '';
?>"></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="pass" value="<?php
if (isset($_COOKIE['Password']))
echo htmlspecialchars($_COOKIE['Password']);
else
echo '';
?>"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="send" value=Login></td>
</tr>
</table>
</form>
</center>
</body>
</html>
oh mein Gott.. Der Fehler ist dumm und komisch....
Wer es wissen will:
das Schließen und Oeffnen des php-Teils war der Fehler, auch wenn ich syntaktisch keinen Fehler sehe....
//________________________________adminportal.php___________________ <?php
session_start();
// <php? ?> <-------- rausloeschen
include('password.php');
$_SESSION['admin'] = false;
.
.
.
.
Yerf!
oh mein Gott.. Der Fehler ist dumm und komisch....
Wer es wissen will:das Schließen und Oeffnen des php-Teils war der Fehler, auch wenn ich syntaktisch keinen Fehler sehe....
Die Leerzeile, die sich zwischen dem schließenden und dem öffnendem Tag befand, wirkt wie ein echo-Befehl: sie gibt eine Leerzeile aus.
Gruß,
Harlequin
Hallo!
oh mein Gott.. Der Fehler ist dumm und komisch....
Wer es wissen will:das Schließen und Oeffnen des php-Teils war der Fehler, auch wenn ich syntaktisch keinen Fehler sehe....
Das kann ich mir nicht vorstellen, da das nach dem session_start() kommt. Steht der Kommentar
//________________________________adminportal.php___________________
wirklich im File? Dann ist das der Fehler. Der Kommentar steht außerhalt des PHP Teiles und wird somit nicht geparsed und an den Client geschickt.
mfg
frafu
Yerf!
Das kann ich mir nicht vorstellen, da das nach dem session_start() kommt.
Nicht session_start() erzeugt den fehler, sondern:
header('Location: administration.php?' . urlencode(session_name()) . '=' . urlencode(session_id()));
Das kommt weiter unten im Quelltext.
Gruß,
Harlequin
Hallo!
Nicht session_start() erzeugt den fehler, sondern:
header('Location: administration.php?' . urlencode(session_name()) . '=' . urlencode(session_id()));
Ach so. Ok. Dann ist das klar.
mfg
frafu
Hallo!
Hi
Ich bekomme bei der Bearbeitung einer php Seite folgenden Fehler:Warning: Cannot modify header information - headers already sent by //...path
Beim Googlen habe ich erfahren, dass, bevor ich eine header Deklaration mache, oder Cookies setze kein echo erfolgen darf.
Es darf gar keine Ausgabe vorher kommen. Nichtmal ein Leerzeichen. Egal ob das mit echo erzeugt wurde oder sonst irgendwie.
Eine Fehlerquelle die man nur schwer findet könnte auch sein, wenn du dein Skript als UTF mit BOM abspeicherst.
mfg
frafu
Ich grüsse den Cosmos,
?>
<?php
Hier gibst du eine Leerzeile, die vermutlich dein Problem verursacht. Da du aber keine Zeilennummern postest, die du in deiner Fehlermeldung hast und auch nicht erwähnst, wie eben diese Zeile aussieht, ist das reine Spekulation.
Möge das "Self" mit euch sein
Hallo
Dass der Fehler die Zeile zwischen den PHP-Blöcken ist, wurde schon mehrfach erwähnt, da ist aber noch ein anderer Fehler.
header('Location: administration.php?' . urlencode(session_name()) . '=' . urlencode(session_id()));
Bei einer Weiterleitung per header('Location: ...') muss immer eine vollständige URL übergeben werden. So richtig mit 'http://example.com' und so. Pappe vor 'administration.php' den vollständigen Pfad, wie du ihn in der Adresszeile des Browsers siehst, und der Fehler löst sich in Wohlgefallen auf.
Tschö, Auge