Ankündigung

Einklappen
Keine Ankündigung bisher.

Header already Send .....was mache ich falsch ?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Header already Send .....was mache ich falsch ?

    PHP-Code:
    WarningCannot modify header information headers already sent by (output started at /var/www/web134003/html/geb/index.php:43in /var/www/web134003/html/geb/login.php on line 33 

    login.php
    PHP-Code:

    31     else {
    32     //Umleitung zurück zum Loginformular mit Fehlermeldung
    33      header('Location: news.php?error='.urlencode('Login fehlgeschlagen'));
    34      }
    ?> 

    index.php
    PHP-Code:
    41     <div id="container">
    42     <?php
    43     $section 
    = array();
    44     $section['news'] = 'news.php';
    45     $section['login'] = 'login.php';


  • #2
    EDIT: Dort steht das doch
    headers already sent by (output started at /var/www/web134003/html/geb/index.php:43)
    Code:
    41     <div id="container"> 
    42     <?php 
    43     $section = array();
    In Zeile 41 ist offensichtlich schon Ausgabe erfolgt.

    Kommentar


    • #3
      Verstehe ich nicht, wieso denn nun Zeile 41 ? da ist doch nur der container ?

      Kommentar


      • #4
        In Zeile 41 ist offensichtlich schon Ausgabe erfolgt.
        http://php-de.github.io/jumpto/headers-already-sent/

        LG
        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Ja eben ... wenn du header() nutzt darf keinerlei ausgabe vorher kommen ... egal ob html oder php

          Kommentar


          • #6
            Schreib mit:

            Ich werde keine Ausgabe vor header erzeugen.
            Ich werde keine Ausgabe vor header erzeugen.
            Ich werde keine Ausgabe vor header erzeugen.
            Ich werde keine Ausgabe vor header erzeugen.
            Ich werde keine Ausgabe vor header erzeugen.
            Ich werde keine Ausgabe vor header erzeugen.
            Ich werde keine Ausgabe vor header erzeugen.
            Ich werde keine Ausgabe vor header erzeugen.
            Windows Server gehören NICHT ins Internet!

            Dildo? Dildo!

            Kommentar


            • #7
              Und was man dagegen tun kann: http://php-de.github.io/jumpto/eva-prinzip/
              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
              PHP.de Wissenssammlung | Kein Support per PN

              Kommentar


              • #8
                Toll, ich verstehe es immer noch nicht,

                ich meine das ich den header sende, verstehe ich ja - aber ich finde den fehler nicht in meinem minni script.

                Kann sich jemand erbarmen und mir auf die sprünge helfen ?

                Kommentar


                • #9
                  PHP-Code:
                       <div id="container"
                  Das ist eine Ausgabe.
                  Relax, you're doing fine.
                  RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

                  Kommentar


                  • #10
                    Ja toll , ich bin nichtmal in der Lage ein einfaches Login script nach nem Tutorial hinzubekommen.....

                    Ich meine wie soll ich den Div Container da weg nehmen ?

                    Kommentar


                    • #11
                      zB mittels E-V-A, siehe oben. Es darf pro Request VOR einem header() keine Ausabe kommen.

                      Macht ja auch keinen Sinn wenn du mit header() weiterleitest da brauchst keine Anzeige/Ausgabe, das könnte ja soweiso keiner sehen wenn weitergleitet wird.
                      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                      PHP.de Wissenssammlung | Kein Support per PN

                      Kommentar


                      • #12
                        Zitat von Cewbacca Beitrag anzeigen
                        Ich meine wie soll ich den Div Container da weg nehmen ?
                        Da wegnehmen und an anderer Stelle wieder einfügen (google "EVA Prinzip")

                        Eingabe (alles, was vom Web aus in deinem Script ankommt)
                        Verarbeitung (PHP Code)
                        Ausgabe (HTML, gemischt mit PHP echos usw.)

                        Die Grundlagen des HTTP Protokolls solltest du dir ebenfalls reinziehen.
                        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                        Kommentar


                        • #13
                          Den kann ich da nicht wegnehmen, wo sonnst sollte ich den hinpacken.....

                          ich poste mal meinen Code vielleicht kann das ja jemand schnell lösen ...

                          Die Index wo der fehler nach absenden des Formulares auftaucht....

                          PHP-Code:
                          <head>

                          <title></title>
                          <meta name="author" content="Jan">
                          <meta name="editor" content="html-editor phase 5">




                          </head>



                          <body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
                          <link rel="stylesheet" href="style.css">


                          <div id="wrapper">Herzlich Wilkommen



                          <!-- Die Navigation -->
                                          <div id="navigation">
                                                   <a href="http://redrix.de/geb/index.php">Home</a> |
                                                   <a href="http://redrix.de/geb/index.php?section=gaeste">Meine Gäste</a> |
                                                   <a href="http://redrix.de/geb/index.php?section=bean">bean</a> |

                                           </div>


                          <div id="con">06.12.2014
                          <div id="short">Gäste auf der Gästeliste: [XX] | Gäste geantwortet: [XX]</div> <div id="cob">06.12.2014</div> </div>

                          <div id="container">    <? include('nav.php') ?>


                          </div><!-- Container Ende -->
                          </div><!-- Wrapper Ende -->
                          </body>

                          Die Login Datei

                          PHP-Code:
                           <?
                           //Datenbankverbindung aufbauen
                          include('connect.inc.php');
                          function login_ueberpruefen($benutzername, $passwort) {
                                //alternativ SHA1
                                $passwort = md5($passwort);
                                //Gegen SQL-Injections schützen
                                $benutzername = mysql_real_escape_string($benutzername);
                                //Benutzer aus der Datenbank abfragen
                                $result = mysql_query("SELECT * FROM benutzer WHERE benutzername='$benutzername'");
                                $benutzer = mysql_fetch_array($result);



                            /*Wurde der Benutzer nicht gefunden oder stimmt
                                   das verschlüsselte Passwort nicht mit der
                                   Datenbankzeile überein, gibt die Funktion false
                                   zurück - das Login ist also fehlgeschlagen*/
                                if(!$benutzer || $benutzer{'passwort'}!=$passwort ) {
                                     return false;
                                } else {
                                     return true;
                                }
                          }

                          if(login_ueberpruefen($_POST{'benutzername'}, $_POST{'passwort'})) {
                              //Benutzer Session setzen
                              $_SESSION{'benutzer'} = $benutzer;

                              //Umleitung zur Startseite bzw. einer beliebigen Seite
                              header('Location: http://redrix.de/geb/index.php?section=intern');

                                    } else {
                              //Umleitung zurück zum Loginformular mit Fehlermeldung
                              header('Location: http://redrix.de/geb/index.php'.urlencode('Login fehlgeschlagen'));
                          }

                          Kommentar


                          • #14
                            Und wo wird login.php eingebunden?

                            Ich denke, eigentlich hast du genug Hinweise bekommen. Fakt ist, du hältst dich nicht ans EVA-Prinzip und somit geht der Aufruf von Header in die Hose. Und nochmal: vor header darf nichts schon an den Brwoser gesendet werden, kein Leerzeichen, keine Leerzeile, kein BOM und auch kein HTML-Code
                            Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

                            Kommentar


                            • #15
                              PHP-Code:
                               $result mysql_query("SELECT * FROM benutzer WHERE benutzername='$benutzername'");
                                    
                              $benutzer mysql_fetch_array($result);

                                
                              /*Wurde der Benutzer nicht gefunden oder stimmt
                                       das verschlüsselte Passwort nicht mit der
                                       Datenbankzeile überein, gibt die Funktion false
                                       zurück - das Login ist also fehlgeschlagen*/
                                    
                              if(!$benutzer || $benutzer{'passwort'}!=$passwort ) {
                                         return 
                              false;
                                    } else {
                                         return 
                              true;
                                    } 
                              Und mach nicht so, frag die Datenbank gleich ob es einen Benutzer mit Benutzername X und Passwort Y gibt und wenn ein Fund dann ok und wenn nicht dann nicht ok. Und mit BINARY im Statement kannst du auch case sensitive suchen. Find ich halt "praktischer". Und wenn ok, dann setzt gleich die Session. Du kannst ja im Anschluss auf gesetzte Session prüfen, dann sparst dir auch das dazwischen true/false.

                              Achja und du bist offen für SQL-Injection und mysql_ wird bald nicht mehr funktionioeren weil es aus PHP rausfliegt: Stichwörter mysqli oder PDO mit Prepared Statements, dann hast du Sicherheit und Veraltet mit einer Klappe geschlagen.

                              http://php.net/manual/en/migration55.deprecated.php

                              http://www.peterkropff.de/site/php/mysqli.htm

                              http://www.peterkropff.de/site/php/pdo.htm

                              LG
                              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                              PHP.de Wissenssammlung | Kein Support per PN

                              Kommentar

                              Lädt...
                              X