Problem mit header()

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

  • Problem mit header()

    Hallo,

    ich habe folgendes Problem.

    Habe einen Warenshop mit Login programmiert. Habe jetzt im Nachhinein eine header.php und footer.php included.

    Das Problem ist jetzt allerdings, dass meiner header("x.php") nicht mehr funktionieren.

    Woran kann das liegen??

    Hier ein Besoiel in einem Skript.
    PHP-Code:
    <?php
      session_start
    ();
      
      require_once 
    "login.class.php";
      
      include_once 
    "header.php";
     
      
    //Variable $ouput wird ausgegeben, wenn Zugangsdaten nicht korrekt waren
      
    $output "";
      
      
    //Hilfsvariable zum Überprüfen der Zugangsdaten
      
    $test 0;
      



    //neues Objekt erzeugen
    $Login = new Login();


    // Formular wurde abgesendet    
    if( isset($_POST['submit']) ){

            
        
        
    // Benutzername oder Passwortfeld nicht gesetzt, d.h. leer
        
    if($_POST['username'] == "" || $_POST['password'] == "" ){
            
    $output '<p><span class="text">Bitte überprüfen Sie ihre Zugangsdaten</span></p>';
            
    $test 1;
        }
        
    // Benutzerdaten überprüfen und wenn gültiger Benutzer dann einloggen
        
        
    elseif($Login->getValidUser() > 0) {
            
                            
            
    $row mysql_fetch_array($Login->getUserData());
               echo 
    "Username: " $row['user_username'];
            
            
    // Benutzerdaten waren ok -> Benutzer einloggen und weiterleiten
            
    $Login->loginUser();
            
    $Login->doRegister();
            
            
            
            
    // Benutzerstatus unterscheiden und entsprechend weiterleiten
                        
                
            
    if ($row['user_status']==0){
                
    header("location:superuser.php");
            }
            elseif (
    $row['user_status'] == 1){
                
    header("location:order2.php");
            }
            elseif (
    $row['user_status'] == && !isset($_SESSION['validuser'])){
                
    header("location:ticket.php");
                }
                else{
                
    $Login->setUserId();
                echo 
    'hallo';
                
    header("location:cart2.php");
                }
            
            
        }
        
        
    // falsche Benutzerdaten wurden eingegeben
        
    else{

            
    $output '<p><span class="text">Bitte überprüfen Sie ihre Zugangsdaten</span></p>';
            
    $test 1;
        }
    }


    // Formularausgabe mit Fehlermeldung bei z.B. falschen Zugangsdaten
    if($test == 1){
        echo 
    $output;
        echo 
    $Login->printUserForm();
        echo
    ' <span class="text">Sie sind noch nicht registriert?</span>';
        echo
    '<a href="register.php"><b>Zur Registrierung</b></a>';
    }

    // Formaularausgabe beim ersten Seitenaufruf
    else{    
        echo 
    $Login->printUserForm();
    echo
    '
    Sie sind noch nicht registriert?'
    ;
    echo
    '<a href="register.php"><b>Zur Registrierung</b></a>';
        
    }


    include_once 
    "footer.php";

    ?>

     
      
      </body>
      </html>

  • #2
    Der header wurde wahrscheinlich bereits gesendet. Speicher mit ob_start() am besten alle Ausgaben und gib sie ganz am Ende aus.

    Kommentar


    • #3
      Wärst Du so nett, mir das mal an diesem Beispeil zu zeigen??

      Bin leider noch nicht sehr erfahren, und muss das Ganze hier schnell zum Abschluss bringen.

      Kommentar


      • #4
        Ein Besipiel ist hier wohl nicht so ganz einfach. Die musst wissen, dass die Header-Funktion nur funktioniert wenn noch keinerlei Daten, und damit auch bereits ein header, an den Browser geschickt wurden. Also wenn irgendeine der Funktionen die du hier einbindest eine Ausgabe erzeugt schlägt die header-Funktion fehl.

        Du hast zum Beispiel einige echo-Zeilen drin.Ohne mir das im Detail durchzuschauen würde ich mal auf die tippen!

        Kommentar


        • #5
          Bevor ich aber header.php und footer.php included habe, hatt alles einwandfrei funktioniert, auch mit den headern.

          Kommentar


          • #6
            Nun dann sind wohl die dafür verantwortlich, dass etwas ausgegeben wird bevor die header() Funktion dran ist.

            Kommentar


            • #7
              in deinem header.php wurde Ausgabe getätigt, lese dir daher die Fehlermeldung durch, dann weisst du auch, ab welche Zeile diese Ausgabe sich stattgefunden hat.

              Kommentar


              • #8
                Sorry, für den ganzen Code hier. Aber stehe irgendwie echt auf dem Schlauch. Hier mal ein Auszug aud der header.php:
                [
                Wenn das das Problem ist, wie kann ich es dann umgehen???
                Zuletzt geändert von bmaas; 10.09.2004, 12:32.

                Kommentar


                • #9
                  Bitte deinen Code umbrechen, aber sofort

                  b2t: 2 Lösungen:
                  - du includierst erst bei Bedarf (saubere Lösung)
                  - du setzst ob_start() ein (RTFM)

                  Kommentar


                  • #10
                    O.K, habe den Code wieder rausgeschmissen. Es wird html ausgegeben, bevor der header() zum Einsatz kommt.

                    Gibt es denn eine andere Möglichkeit auf eine andere Seite zu verweisen, bei der es egal ist, dass vorher schon was ausgegeben wurde???

                    Kommentar


                    • #11
                      liest du nicht was ich poste was auch em-!x längst gesagt hat

                      Kommentar


                      • #12
                        Wenn ich bei meinem geposteten Skrip ob_start() ganz an den Anfang setze und ob_end_flush() ans Ende, wird gar nicht mehr geprüft ob die Bedingungen der Login-Eingabe stimmen, sondern es wird sofort auf die Seite weitergeleitet, die in der ersten header()-Funktion erscheint.

                        Bitte helft mir, ich weiss nicht, wie ich das anstellen soll.

                        Danke!!

                        Kommentar


                        • #13
                          es liegt bestimmt nicht an ob_start sondern eher an deiner Bedingung fürs Redirect. Überprüfe durch Ausgabe mal.

                          Kommentar


                          • #14
                            Danke, habe den Fehler gefunden.

                            Werde jetzt richtig weitergeleitet, aber auf der Seite, auf die ich weitergeleitet werde wird nichts mehr angezeigt.

                            Woran kann das nun wieder liegen??

                            Ich verzweifle noch über diese Aktion.

                            Hilfe!!!

                            Kommentar


                            • #15
                              was weiss ich, meine Glaskugel ist grad runter gefallen und muss erst repariert werden...

                              Kommentar

                              Lädt...
                              X