Ankündigung

Einklappen
Keine Ankündigung bisher.

Headers already sent...

Einklappen

Neue Werbung 2019

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

  • Headers already sent...

    Hallo,
    habe ein kleines Problem mit der Weiterleitung nach dem Login.
    Der Code sieht so aus:
    PHP-Code:
    <?php if (!defined('IN_SITE')) { echo "Zugriff verweigert!"; die(); } ?>
    <?php
        
    if($db->isUserLoggedIn() === TRUE) {
            echo 
    "Du bist bereits eingeloggt! - <a href='index.php?section=logout' alt='Ausloggen'>(ausloggen)</a>";
        } else {
        if(isset(
    $_POST['einloggen'])) {
                
    $mail $_POST['email'];
                
    $passwort sha1($_POST['passwort']);
                
                if(
    $db->login($mail$passwort) === TRUE) {
    header("Location: index.php?section=loginerfolg");  
                } else {
                    echo 
    "Einloggen fehlgeschlagen!";
                }
        }    
    ?>
    Wenn ich mich nun einlogge, bekomme ich die Meldung: Cannot modify header information - headers already sent by (output started at .../index.php:40) in /.../login.php on line 12

    Habe dann natürlich gegooglet und herausgefunden, dass vor dem Header bspw. keine Ausgabe in Form von Echo oder HTML befehlen oder Leerzeichen sein darf.
    Habe es nach Leerzeichen geprüft und nichts gefunden.
    Dann gesehen, dass ich ganz am Anfang echo "Zugriff verweigert"; ausgebe.
    Also müsste mein Header-Befehl auch vor diesem Php-Block stehen, bin ich soweit richtig? Gesagt getan - habe ein neuen PHP befehl geöffnet und den login Teil rauskopiert und eingefügt; Header nach ganz oben verschoben. Somit hatte ich kein Echo befehl über dem Header aber dennoch bekam ich die Meldung Headers already sent[...].
    Habe ich irgendetwas übersehen? Bitte macht mich nicht gleich fertig nach dem Motto "Google ist dein Freund" oder "Benutz die SuFu". Das habe ich alles getan und komme immer noch nicht weiter, sonst würde ich mir gewiss nicht die Mühe machen und einen Thread erstellen.


    Mfg


  • #2
    hey Sporax,

    ich würde dir einfach eine javascript weiterleitung empfehlen. Dann hast du dieses problem nicht.

    Mfg

    Flava

    Kommentar


    • #3
      Hi,
      vielen Dank für deine Antwort!
      Das habe ich auch schon gelesen, aber dann hat man das Problem, dass Leute die JS deaktiviert haben dann nicht weitergeleitet werden. Oder liege ich da falsch?

      Mfg

      Kommentar


      • #4
        Zitat von Flava_Slava Beitrag anzeigen
        ich würde dir einfach eine javascript weiterleitung empfehlen. Dann hast du dieses problem nicht.
        Quatsch, man muss es mit PHP nur richtig machen!


        @Sporax
        Wieso gibst du da überhaupt was aus?
        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


        • #5
          du kannst ja zusätzlich noch einen Link anzeigen, dass der Benutzer dann durch den klick auf den link weitergeleitet wird. So machen es viele Seiten.

          mfg

          Flava

          Kommentar


          • #6
            Hey,
            daran habe ich garnicht gedacht.
            Vielen Dank werde mir das mal genauer anschauen

            Kommentar


            • #7
              Hör' mit dem Blödsinn auf! Wenn das Script richtig strukturiert wird, brauchst du kein JavaScript und auch keinen Link!
              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


              • #8
                Zitat von uha Beitrag anzeigen
                Quatsch, man muss es mit PHP nur richtig machen!


                @Sporax
                Wieso gibst du da überhaupt was aus?
                Sorry hab den Beitrag vorhin nicht gesehen
                Möchte da sowas wie "Erfolgreich eingeloggt" ausgeben und dann auf die Startseite weiterleiten.

                Kommentar


                • #9
                  Diese Ausgabe sieht kein Mensch, weil die Weiterleitung sofort ausgeführt wird
                  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


                  • #10
                    Hey, also es sollte so aussehen:
                    User loggt sich ein -> wird durch
                    PHP-Code:
                     header("Location: index.php?section=loginerfolg"); 
                    auf loginerfolg.php weitergeleitet ->
                    loginerfolg.php besagt :
                    PHP-Code:
                     <?php if (!defined('IN_SITE')) { echo "Zugriff verweigert!"; die(); } ?>
                    <?php 
                    echo "Du hast dich erfolgreich eingeloggt!";
                    header("refresh:2;url=index.php?section=startseite");  
                    ?>
                    Als ich das auf meinem Localhost getestet habe funktionierte auch alles.
                    Nachdem ich alles auf den bplaced Server hochgeladen hab fingen die ganzen Header Meldungen an.

                    Kommentar


                    • #11
                      Zitat von Sporax Beitrag anzeigen
                      Als ich das auf meinem Localhost getestet habe funktionierte auch alles.
                      Dann solltest du mal das error_reporting hochdrehen, was man sowieso bei der Entwicklung machen sollte.

                      Ansonsten sehe ich keine Probleme bei deinem Vorhaben, solange du dich an das EVA-Prinzip hältst. Dann hat man auch keine Problememit Ausgaben vor header.
                      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


                      • #12
                        Zitat von Sporax Beitrag anzeigen
                        Cannot modify header information - headers already sent by (output started at .../index.php:40) in /.../login.php on line 12
                        PHP sagt dir exakt, wo die Ausgabe stattfindet...
                        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                        Kommentar


                        • #13
                          Zitat von lstegelitz Beitrag anzeigen
                          PHP sagt dir exakt, wo die Ausgabe stattfindet...
                          Darf ich garkeinen HTML Befehl haben? Selbst in anderen Dateien?
                          In Line 40 steht folgendes:
                          PHP-Code:
                          <html> -> Zeile 20

                          <head>
                              <title> Meine Homepage </title>
                              <meta charset="ANSI">
                              <link rel="stylesheet" type="text/css" href="style.css">
                              <!--[if gte IE 9]>
                                <style type="text/css">
                                  .gradient {
                                     filter: none;
                                  }
                                </style>
                              <![endif]-->
                          </head>

                          <body>
                              <div id="wrapper" class="shadow_menu">
                               <nav>
                                   <?php include ("menu.php"); ?> ->Zeile 40
                               </nav>
                               <main>
                                      <?php include ("sites.php"); ?>
                              </main>
                          </div>
                              <footer>
                                      <?php include ("footer.php"); ?>
                              </footer>

                          Kommentar


                          • #14
                            Vor dem Header-Befehl darf nichts zum Browser geschickt werden, kein Leerzeichen, keine Leerzeile, kein HTML-Code, nada, nix, null Komma nix.

                            Das macht auch keinen Sinn.
                            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:
                              <?php if (!defined('IN_SITE')) { echo "Zugriff verweigert!"; die(); } ?>
                              <?php
                              PHP Tag zu -> Zeilenumbruch -> PHP Tag auf

                              Auch dieser Zeilenumbruch kann zur Fehlermeldung führen
                              :cookie: ?

                              Kommentar

                              Lädt...
                              X