Ankündigung

Einklappen
Keine Ankündigung bisher.

header (Location:.....) wird nicht aufgerufen

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • header (Location:.....) wird nicht aufgerufen

    Hallo Leute, bei mir funktioniert der Aufruf mittels header nicht.

    Mein Code ist wie folgt aufgebaut:

    Datei "index.php"
    PHP-Code:
    <html>  
    <head>  
      <title>Index</title>  
      <link rel="stylesheet" type="text/css" href="css/basic.css"> 
    </head>  
    <body>  
      <h1>OnlineTest-System</h1> 
    <?php 
    include_once ("login.php");
     
    ?>
    </body>  
    </html>
    So, und nun die Datei "login.php"
    PHP-Code:
    <?php  
    // Session starten 
    session_start (); 

    // Datenbankverbindung aufbauen  
    include ('system/mySQL.php');
    $db=new mysql(DB_ONLINETEST);

    //Funktionsaufruf
    main();

    function 
    main() {    
        
    $action 0;
        if (isset(
    $_REQUEST['action']))
            
    $action $_REQUEST['action'];
        
        switch (
    $action) {
            case 
    0showLogin(); break;
            case 
    1checkLogin(); break;
            default: 
    showLogin(); break;
        }
    }

    //Loginformular
    function showLogin() {
        echo 
    '<form name="login" action="'.$_SERVER['SCRIPT_NAME'].'" method="post">';
        echo 
    '<div align="center">';
        echo 
    '<fieldset id="loginpanel">';
        echo 
    '  <legend>Login</legend>';
        echo 
    '    <br />';
        echo 
    '    <table>';
        echo 
    '  <tr align="left"><td>Benutzername: </td><td><input type="text" name="user" tabindex="1" /></td></tr>';
        echo 
    '  <tr align="left"><td>Passwort: </td><td><input type="password" name="pwd" tabindex="2" /></td></tr>';
        echo 
    '  <tr><td colspan="2"><input type="hidden" name="action" value="1" /></td></tr>';
        echo 
    '  <tr align="left"><td>&nbsp;</td><td><input class="submit" type="submit" value="Login" /></td></tr>';
        echo 
    '  <tr><td colspan="2">&nbsp;</td></tr>';
        echo 
    '    </table>';
        echo 
    '</fieldset>';
        echo 
    '</div>';  
        echo 
    '</form>';
    }

    //Überprüfung der vom User eingegebenen Login Daten    
    function checkLogin() {        
        global 
    $db;
        
    $str_sql 'SELECT u_id, bezeichnung, passwort, rechte FROM tbl_benutzerdaten';
        
    $result $db->select($str_sql,1);
            
        
    $user '';
        
    $pwd '';
                
        if (isset(
    $_REQUEST['user'])) {
            
    $user $_REQUEST['user'];
        }
        
        if (isset(
    $_REQUEST['pwd'])) {
            
    $pwd = ($_REQUEST['pwd']);
        }
        
        
    $break 0;
        foreach (
    $result as $row) {
            
    $user_id $row['u_id'];
            
    $username $row['bezeichnung'];
            
    $passwort $row['passwort'];
            
    $rechte $row['rechte'];
                    
            if (
    $user == $username && md5 ($pwd) == $passwort) {    
                
    $_SESSION['user_id'] = $user_id;
                
    $_SESSION['username'] = $username;
                
    $_SESSION['rechte'] = $rechte;
                if (
    $rechte == 1) {
                    
    header ("Location: admin/index.php");
                    die;
                }
                else {
                    
    header ("Location: user/index.php");
                    die;
                }
                echo 
    '<input type="hidden" name="user_id" value="'.$user_id.'" />';
                
    $break 1;
                break;
            }
        }
            
        if (
    $break == 0) {
            echo 
    '<div class="error">';
            echo 
    "ANMELDUNG FEHLGESCHLAGEN<br />Bitte versuchen Sie es nochmals";
            echo 
    '</div>';
            
    showLogin();
        }
    }
    In der Funktion "function checkLogin()" habe ich diesen Bereich
    PHP-Code:
                if ($rechte == 1) {
                    
    header ("Location: admin/index.php");
                    die;
                }
                else {
                    
    header ("Location: user/index.php");
                    die;
                } 
    Es öffnet sich aber die Seite nicht. Was mache ich da falsch?


  • #2
    error_reporting hochsetzen, Warnungen und Fehler lesen & verstehen.

    (Ich wette meine Frühstücksbrötchen, das du die Meldung "headers already sent" bekommst).
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Fehleranzeige aktivieren, Fehler googlen.
      --

      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
      Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


      --

      Kommentar


      • #4
        Hi.

        Es darf keine Ausgabe vor Header erfolgen, sonst geht es nicht:

        PHP: header - Manual

        Error_Reporting mal einstellen!

        Wolf29
        while (!asleep()) sheep++;

        Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

        Kommentar


        • #5
          So, wie darf ich das verstehen, dass keine Ausgabe vorher erfolgen darf?

          Wie kann ich das denn sonst lösen?

          Anbei der Fehler, welcher erscheint:
          "Warning: Cannot modify header information - headers already sent by (output started at /home/co000451/www/home/zusatz/test/index.php: in /home/co000451/www/home/zusatz/test/login.php on line 72"

          Kommentar


          • #6
            So wie lstegelitz schon vermutet hatte! Wenn Du Dir meinen Link durchliest, wirst Du es verstehen!

            Wolf29
            while (!asleep()) sheep++;

            Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

            Kommentar


            • #7
              Headers already sent - PHP.de Wiki
              --

              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


              --

              Kommentar


              • #8
                Ok, das ist mir jetzt klar.

                Ich habe nun versucht, anstelle des Headers ein Include zu verwenden. Aber das ist in meinem Fall auch Falsch.

                Ich kann eigentlich nur ein javascript verwenden. mit window.location=.....

                Oder gibts da vielleicht ne bessere Lösung?

                PS: Mir ist nochwas aufgefallen. Ich weiss nicht warum, aber wenn ich den Browser starte und meine Login-daten eingebe, muss ich dies immer 2x tun, bis er dann weitermacht.

                Ich gebe also Benutzername und PW ein und dann erscheint nochmals das Loginformular mit Benutzername und PW. Und wenn ich es nochmals eingegeben habe, dann geht es erst weiter.

                Wenn ich dann im Geschlossenen Bereich bin und dann auf Logout klicke, bin ich wieder beim Loginformular.
                Wenn ich jetzt wiederum die Zugangsdaten eingebe, bin ich gleich beim 1. Mal drinn.

                Woran kann das denn liegen?

                Kommentar


                • #9
                  Ich kann eigentlich nur ein javascript verwenden. mit window.location=.....

                  Oder gibts da vielleicht ne bessere Lösung?
                  Arbeite mit Templates oder halte dich an das EVA Prinzip
                  sigpic

                  Kommentar


                  • #10
                    Ich gebe also Benutzername und PW ein und dann erscheint nochmals das Loginformular mit Benutzername und PW. Und wenn ich es nochmals eingegeben habe, dann geht es erst weiter.
                    Und wir sollen jetzt raten oder was? Ich schlage vor, Du löst erstmal das headers-sent-Problem.

                    [MOD: Thread geschlossen]
                    --

                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                    --

                    Kommentar

                    Lädt...
                    X