header Problem: Header Problem

Hi,

ich habe mal wieder ein Headerprobelm. Das Problem ist aber eigentlich, das es bei Windoof geklappt hat und jetzt bei Linux nicht egal. Also hier die Fehlermeldung:

Warning: Cannot modify header information - headers already sent by (output started at /opt/lampp/htdocs/Auftraege/Steffen/news_schreiben.php:6) in /opt/lampp/htdocs/Auftraege/Steffen/news_schreiben.php on line 14

Und hier mal das Script dazu vielleicht könnt ihr mir ja helfen...

  
  
<?php  
  
echo '  
<form action="'.$_SERVER['PHP_SELF'].'" method="post">  
<span style="color:c0c0c0;font-size:15px;">Login: <input type="text" class="registration" name="login">  
Passwort: <input type="password" class="registration" name="password">  
<input type="submit" name="login" value="Login"></form>';  
?>  
<?php  
if(isset($_POST["login"])){  
  
        if (($_POST["login"] == "steffen") ||  
            ($_POST["password"] == "admin")) {  
  
         header("Location: news_schreiben_2.php");  
  
}  
        if (($_POST["login"] != "steffen") ||  
            ($_POST["password"] != "admin"))  
{  
echo '  <span style="color:red">Falscher Login!</span>';  
}  
}  
  
?> 
  1. Warning: Cannot modify header information - headers already sent by (output started at /opt/lampp/htdocs/Auftraege/Steffen/news_schreiben.php:6) in /opt/lampp/htdocs/Auftraege/Steffen/news_schreiben.php on line 14

    Hallo,

    die Fehlermeldung besagt ja, das der Header nicht gesendet werden kann, da dieser ja schon längst - nämlich durch deine echo-Ausgabe am Anfang der Datei - gesendet worden ist.
    Die Lösung wäre, die echo-Ausgabe abhängig deiner PWD-Üperprüfung ausgeben zu lassen.

    Gruss
    Didi71

    1. Die Lösung wäre, die echo-Ausgabe abhängig deiner PWD-Üperprüfung ausgeben zu lassen.

      Könntest du mir das vielleicht noch ein bisschen erklären bin Anfänger. Vielleicht ein Beisiel geben...

      1. Hallo header.

        Könntest du mir das vielleicht noch ein bisschen erklären bin Anfänger. Vielleicht ein Beisiel geben...

        Dann solltest du dir php.net merken. Dort findest du nahezu alles, was du wissen musst, unter anderem Informationen zu header().

        Gruß, Ashura

        --
        Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
        Try it: Become an Opera Lover in 30 days
        Meine Browser: Opera 8.0 | Firefox 1.0.4 | Lynx 2.8.3 | Netscape 4.7 | IE 6.0
        IE Layout-Workaround №1: <!--[if IE]><style type="text/css">*{display:none;}</style><![endif]-->
      2. Die Lösung wäre, die echo-Ausgabe abhängig deiner PWD-Üperprüfung ausgeben zu lassen.

        Könntest du mir das vielleicht noch ein bisschen erklären bin Anfänger. Vielleicht ein Beisiel geben...

        Hi nachmal,
        mal auf die schnelle ein unsauberer Code, der aber vielleicht dir ein bissel hilft:

          
        <?php  
        if ($aktion!="login") {  
        echo '  
        <form action="'.$_SERVER['PHP_SELF'].'" method="post">  
        <span style="color:c0c0c0;font-size:15px;">Login: <input type="text" class="registration" name="login">  
        Passwort: <input type="password" class="registration" name="password">  
        <input type="submit" name="login" value="Login"><input type="hidden" name="aktion" value="login"</form>';  
        }  
        if(isset($_POST["login"])){  
          
                if (($_POST["login"] == "steffen") ||  
                    ($_POST["password"] == "admin")) {  
          
                 header("Location: news_schreiben_2.php");  
          
        }  
                if (($_POST["login"] != "steffen") ||  
                    ($_POST["password"] != "admin"))  
        {  
        echo '  <span style="color:red">Falscher Login!</span>';  
        }  
        }  
        ?>  
        
        

        Erstmal hab ich die PHP-End-Tags entfernt und dein Formulat um ein
        unsichtbares Feld (Name:aktion/Gesetzter Wert:login) erweitert.
        Wird jetzt die Datei aufgerufen, überprüft das Script zuerst ob die Varibale "aktion" den Wert "login" hat - falls nein wird das Formular ausgegeben. Wenn das Formular abgesendet wurde, hat die Vari ja einen Wert, so das die Ausgabe übergangen wird und direkt die Überprüfung läuft. Sauberer kann man natürlich auch "!isset" verwenden, also prüfen, ob die Varibale überhaupt da ist.

        Gruss
        Didi72

    2. Nachtrag:
      Zudem scheint es ja, das du aus 2 PHP-Dateien eins machen wolltest,
      hättest du beide belassen (einmal Login-Formular und einmal die Auswertung) würde das Script auch laufen.
      Gruss
      Didi72