Anmeldeprozedur

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

  • Anmeldeprozedur

    Hallo, ich habe folgendes Script im Einsatz, um das Login aus einer Maske heraus zu prüfen. Teilweise funktioniert es, aber ich habe das Gefühl als wenn er das Kennwort nicht mit überprüft.

    PHP-Code:
     if (!empty($_POST['user']) and !empty($_POST['vor_user'])) 
              {          
              
    $query "select id, name, vorname, kennwort, login from laeufer where name='".$_POST['user']."' and vorname='".$_POST['vor_user']."' and kennwort ='".$_POST['kennwort']."'"
              }  
                    else
              {
              
    $query "select id, name, vorname, kennwort, login from laeufer where login='".$_POST['login']."' and kennwort ='".$_POST['kennwort']."'";
              }
                
    $ergebnis mysql_query($query,$verbindung);          
                    if(!
    $ergebnis)
                      echo 
    mysql_error();             

             while(
    $zeile=mysql_fetch_array($ergebnis,MYSQL_BOTH))                   
                    {
                   
    $uid=$zeile["id"];               
                    
    $uname=$zeile["name"];               
                    
    $uvorname=$zeile["vorname"];               
                    
    $ulogin=$zeile["login"];               
                    
    $kennwort=$zeile["kennwort"];
                    }      
                 
    mysql_free_result($ergebnis); 
                 
    session_start(); 
                    
    $_SESSION['id']=$uid
                    
    $_SESSION['vorname']=$uvorname;
                    
    $_SESSION['name']=$uname;

            if ((
    $uname=$_POST['user'] and $uvorname =$_POST['vor_user']and $kennwort=$_POST['kennwort']) or ($ulogin=$_POST['login'] and $kennwort=$_POST['kennwort']))                                 
                {
            
    //öffnen der Seite start.php    
              
    header('Location: ./start.php');  
                }                                 
                    else        
                {                         
            
    //die Index.php wird mit dem Hinweis, das das Login nicht stimmt neu aufgerufen                                 
               
    header('Location: ./index.php?abgewiesen=true'); 
                } 
    Mir fehlt im Moment jede Idee woran es liegt.
    Zuletzt geändert von michaelb; 03.12.2008, 05:35.

  • #2
    OK, fangen wir mal an:

    1. Konkretisiere "Teilweise funktioniert es".
    2. dass du ein "Gefühl" hast, hilft uns nicht weiter. Hast du einen konkreten Verdacht? Wenn ja: Was (konkret) verursacht deinen Verdacht?
    3. bitte brich deinen Code gemäß unseren Regel um
    4. und rück ihn dabei gleich ordentlich ein, denn in seinem jetztigen Zustand fällt es sehr schwer, die Struktur auf einen Blick zu erfassen und verursacht einfach unnötige Mühe beim Lesen -> viele werden sich erst gar nicht die Mühe machen
    5. dann werden Sie geholfen


    Grüße
    Zuletzt geändert von Griecherus; 02.12.2008, 22:48.
    Nieder mit der Camel Case-Konvention

    Kommentar


    • #3
      So, ich habe den Text nochmal neu formatiert, ist aber gar nicht so einfach, denn der Editor zeigt ein total schiefes Bild, man muss also echt raten, in welche Richtung man welche Zeile verrücken muss, so das es anständig formatiert ist.

      So nun will ich mal das Problem genauer beschreiben:

      normalerweise sollte ich wenn das Login(Login oder Name/Vorname) und das Kennwort nicht übereinstimmen eine Seite mit der erneuten Eingabeaufforderung erhalten.
      Ich erhalte aber teilweise meine Anwendung, mit nicht gesetzter Sessionvariable. Soweit ich das bis jetzt ausgetestet habe, verhält sich das so gebe ich login und kennwort verkehrt an, so erhalte ich die Seite mit der leeren Sessionvariable, gebe ich nur Login an, so erhalte ich die Anmeldeseite mit der Aufforderung mich erneut anzumelden.

      Gruß

      Michael

      Kommentar


      • #4
        also Dein code fängt schon etwas unlogisch an da Du davon ausgehst dass variablen gesetzt sind, wenn andere es nicht sind, ok, aber schau mal hier:
        Code:
          if (($uname=$_POST['user'] and $uvorname =$_POST['vor_user']and $kennwort=$_POST['kennwort']) 
        or ($ulogin=$_POST['login'] and $kennwort=$_POST['kennwort']))
        imho wird diese Bedingung immer wahr sein, sofern alle vars gesetzt sind daher kommt eine Weiterleitung nach start.php
        Beantworte nie Threads mit mehr als 15 followups...
        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

        Kommentar


        • #5
          und damit Du weisst warum die session leer ist:
          Code:
           while($zeile=mysql_fetch_array($ergebnis,MYSQL_BOTH))                   
                          {
                         $uid=$zeile["id"];               
                          $uname=$zeile["name"];               
                          $uvorname=$zeile["vorname"];               
                          $ulogin=$zeile["login"];               
                          $kennwort=$zeile["kennwort"];
                          }      
                       mysql_free_result($ergebnis); 
                       session_start(); 
                          $_SESSION['id']=$uid; 
                          $_SESSION['vorname']=$uvorname;
                          $_SESSION['name']=$uname;
          Du füllst immer Deine Session, egal ob dein $zeile=mysql_fetch_array($ergebnis,MYSQL_BOTH) ein Ergebnis hat oder nicht. Besser wäre direkt am Anfang wenn der login falsch ist, eine Abweisung zu erzeugen.


          und dann ganz wichtig, beschäftige Dich mal mit sql injections, Dein geschriebener Code schreit förmlich danach
          Beantworte nie Threads mit mehr als 15 followups...
          Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

          Kommentar

          Lädt...
          X