php_beginner: Warning: Cannot modify header information - headers...

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>

  1. 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;
    .
    .
    .
    .

    1. 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

    2. 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

      1. 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

        1. 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

  2. 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

  3. 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

    --
    Fragt ein Atom das andere: Hast du mein Elektron gesehen? Ich bin heute so positiv.
    ie:{ br:> fl:| va:| ls:& fo:{ rl:( n4:{ de:] ss:) ch:? js:| mo:) sh:( zu:)
  4. 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

    --
    Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
    (Victor Hugo)
    <dingdong /><dingdong /><toc /><toc /><toc /><shout>Florence!</shout>
    Veranstaltungsdatenbank Vdb 0.1