Ankündigung

Einklappen
Keine Ankündigung bisher.

nach 2x-iger Logineingabe kommt erst die gewünschte seite

Einklappen

Neue Werbung 2019

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

  • nach 2x-iger Logineingabe kommt erst die gewünschte seite

    Hallo Leute,

    mein header problem habe ich vorerst mal gelöst. Zwar nicht mit einem Template, sondern mittels Javascript, da ich noch nie mit Templates gearbeitet habe und dieses Projekt auch nicht sehr groß ist. Das funktioniert schon mal.

    Aber ich hab ein Login-Problem.

    Wenn ich meinen Browser öffne, erscheint mein Loginformular. Wenn ich jetzt BN und PW zum 1. mal eingebe, passiert nichts. Ich muss also nochmals BN und PW eingeben und erst nach der 2. eingabe komme ich auf das gewünschte Fenster.

    Anbei mal meine 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>
    und nun meine Login.php
    PHP-Code:
    <?php  
    // Session starten 
    session_start (); 
    //error_reporting(E_ALL);
    // 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;
                
    weiterleitung($rechte);
                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();
        }
    }
    function 
    weiterleitung($rechte) {    
        
    $url1 "http://www.contectum.com/zusatz/test/admin/index.php";
        
    $url2 "http://www.contectum.com/zusatz/test/user/index.php";

        if (
    $rechte == 1) {
            echo 
    '<script language="javascript">window.location="'.$url1.'";</script>'
        }
        else {
            echo 
    '<script language="javascript">window.location="'.$url2.'";</script>'
        } 
    }
    Liegt es an der Session?


  • #2
    Das ist ja ein wirres Script. Wieso die sinnlosen Funktionen, das Übergeben der Rechte an die Funktion wärend sie eh ind er Session gespeichert sind, das hidden field echon beim Userchecken (obwohl die UID in der Session steht), das $break = 1 etc? Wtf.

    Kommentar


    • #3
      Warum eine Weiterleitung mit Javascript ?

      Normalerweise erst die Useringaben verarbeiten und dann irgendwas echoen oder weiterleiten, usw

      http://de.wikipedia.org/wiki/EVA-Prinzip
      Signatur:
      PHP-Code:
      $s '0048656c6c6f20576f726c64';
      while(
      $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

      Kommentar


      • #4
        Zitat von m-werk Beitrag anzeigen
        Wenn ich meinen Browser öffne, erscheint mein Loginformular. Wenn ich jetzt BN und PW zum 1. mal eingebe, passiert nichts. Ich muss also nochmals BN und PW eingeben und erst nach der 2. eingabe komme ich auf das gewünschte Fenster.
        Keine Ahnung.
        Aber lass dir doch einfach mal alle benötigten Variablen beim überprüfen des Logins ausgeben.

        Wenn du außerdem erst die Existenz der Username- & Password-Variablen zuerst prüfst, kannst du dir den Quatsch mit der Schleife sparen, in dem du einfach gleich beides in die DB-Abfrage einbaust. Kommt kein Ergebnis, war wohl entweder der Name oder das Passwort falsch.

        Zusätzlich wie oben schon erwähnt: Weiterleitungen mach man mit header(); die Funktionen kannst du dir sparen - macht in dem Fall alles nur unübersichtlicher; wozu wird nach dem redirect noch ein hidden-field ausgegeben? Generell: vereinfachen, vereinfachen, vereinfachen - dann findest du auch den Fehler!
        zum Beispiel:
        PHP-Code:
        if(!empty($_POST['user']) && !empty($_POST['pwd']))
        {
            
        /* check login */
        }
        else
        {
            
        /* show login */

        statt:
        PHP-Code:
        main(); 

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

        Je grösser der Dachschaden, desto schöner der Ausblick zum Himmel. - [WIKI]Karlheinz Deschner[/WIKI]

        Kommentar

        Lädt...
        X