loginscript über textdatei: Fehler beim Login (Verleich von Variablen)

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

  • loginscript über textdatei: Fehler beim Login (Verleich von Variablen)

    Hallo Leute!

    Ich habe ein Loginscript welches aus einer Textdatei Benuterdaten ausließt. Ich übergebe aus der form die Daten aus den Textfeldern. Jetzt will ich vergleichen ob die Benutzerdaten die der Benutzer eingegeben hat den Daten in der Benutzerdatei entpsrechen, leider schlägt hier der Vergleich fehl. Der aktive Vergleich scheint nicht zu funktionieren da er nicht in die Abfrage rein springt. Der Vergleich über die Variable $treffer liefert einen Wert > 0 zurück sollte aber == 0 sein. Wer hat da eine Idee wo hier der Fehler liegt?

    PHP-Code:
    // Session starten
    session_start ();

    $go 0;
    //$treffer = 0;

    //überprüfung der eingabe
    if( isset($_POST['login'], $_POST['pwd'])
            AND
            
    strcmp(trim($_POST['login']),'') != 0
            
    AND
            
    strcmp(trim($_POST['pwd']),'') != )

    {

    // config
    include("config.cfg");

    //textdatei auslesen und user abgleich
    $fp fopen($userinfo,"r");
        if (
    $fp)
        {
            while (!
    feof($fp))
            {
                
    $zeile fgets($fp100);
            }
            
    fclose($fp);
        }


    $loginwert .= $_POST['login'];
    $loginwert .= ":";
    $loginwert .= $_POST['pwd'];

    if(
    file_exists($userinfo))
        {
            
    $inhalt file($userinfo);
            
    $anzahl count($inhalt);
            for(
    $i 0$i $anzahl$i++)
            {
                
    # inhalt auslesen
                
    $newinhalt array_values($inhalt);
                
    # inhalt zerteilen
                
    $eintrag explode(":",$newinhalt[$i]);
                
    # variabeln defenieren
                
    $usrname $eintrag[0];
                
    $usrpw $eintrag[1];
                
                
    $logmatch $usrname;
                
    $logmatch .= ":";
                
    $logmatch .= $usrpw;

                
    $treffer strcmp($loginwert,$logmatch);

                if (
    $loginwert == $newinhalt[$i])
                
    //if ($treffer > 0)
                
    {
                    
    $go 1;
                    break;
                }

            }
        }

        if (
    $go == 1)
        {
            
    // Sessionvariablen erstellen und registrieren
            
    $_SESSION["user_login"] = $_POST['login'];
            
    $_SESSION["user_pwd"] = $_POST['pwd'];

            
    header ("Location: selection.php");
        }
        else
        {
            
    header ("Location: index.php?fehler=1");
        }

    }
    else
    {
      
    header ("Location: index.php?fehler=1");


  • #2
    1. wo definierst du $userinfo?
    2. hier wird die variable jedesmal überschriben!
    PHP-Code:
    while (!feof($fp))
    {
       
    $zeile fgets($fp100);

    3. welchen zweck hat überhaupt dieses while schleife?
    4. was machst du denn hier?
    PHP-Code:
    $eintrag explode(":",$newinhalt[$i]);
    # variabeln defenieren
    $usrname $eintrag[0];
    $usrpw $eintrag[1];
                
    $logmatch $usrname;
    $logmatch .= ":";
    $logmatch .= $usrpw
    erst dröselt du etwas auf (explode) und fügst es dann wieder genau so zusammen, wie es vorher war.
    6. gehört das nicht vor die for-schleife? ist das nicht überflüssig?
    PHP-Code:
    $newinhalt array_values($inhalt); 
    7. sollte schon ausreichen
    PHP-Code:
    $eintrag explode(":",$inhalt[$i]); 
    irgendwo scheint da hinten und vorne die logik zufehlen.

    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Also ich hab jetzt mal einige Änderungen an dem Script vorgenommen. Aber ich hab noch ein Problem mit der Abfrage wo das Password überprüft werden soll. Wenn ich mit echo die Variablen ausgebe dann stimmen die Werte aber die Abfrage wird einfach nicht korrekt ausgeführt.

      Hier mal der Teil der Probleme macht. Die Erste Abfrage funktioniert, aber die 2te wird nicht ausgeführt.

      PHP-Code:
      if($_POST['login']==$usrname)
                  {
                      
      //echo "OK </br>";
                          
      if((string)$_POST['passwd']==(string)$usrpw)
                          {
                              
      //echo "go </br>";
                              
      $go 1;
                              break;
                          }
                          
      //else
                              //echo "fehler bei go </br>";
                  

      Und hier das ganze Script:

      PHP-Code:

      <?

      // Session starten
      session_start ();

      $go = 0;

      //überprüfung der eingabe
      if( isset($_POST['login'], $_POST['passwd'])
              AND
              strcmp(trim($_POST['login']),'') != 0
              AND
              strcmp(trim($_POST['passwd']),'') != 0 )

      {

      // config
      include("config.cfg");

      if(file_exists($userinfo))
          {
              # Datei auslesen
              $inhalt = file($userinfo);
              $anzahl = count($inhalt);        
              $newinhalt = array_values($inhalt);
              
              for($i = 0; $i < $anzahl; $i++)
              {
                  # inhalt zerteilen
                  $eintrag = explode(":",$newinhalt[$i]);
                  # variabeln defenieren
                  $usrname = $eintrag[0];
                  //echo "eintrag[0]: " . $usrname . "</br>";
                  $usrpw = $eintrag[1];
                  //echo "eintrag[1]: " . $usrpw . "</br>";

                  //$treffer = strcmp($loginwert,$logmatch);
                  
                  //echo "POST[login]: " . $_POST['login'] . "</br>";
                  //echo "POST[pwd]: " . $_POST['pwd'] . "</br>";
                  
                  //echo "Vergleich: " . $_POST['login'] . " " . $usrname. "</br>";
                  //echo "Vergleich: " . $_POST['pwd'] . " " . $usrpw . "</br>";

                  //if((string)$_POST['login']==(string)$usrname || (string)$_POST['pwd']==(string)$usrpw)
                  if($_POST['login']==$usrname)
                  {
                      //echo "OK </br>";
                          if((string)$_POST['passwd']==(string)$usrpw)
                          {
                              //echo "go </br>";
                              $go = 1;
                              break;
                          }
                          //else
                              //echo "fehler bei go </br>";
                  }

              }
          }

          if ($go == 1)
          {
              // Sessionvariablen erstellen und registrieren
              $_SESSION["user_login"] = $_POST['login'];
              $_SESSION["user_pwd"] = $_POST['pwd'];

              header ("Location: selection.php");
          }
          else
          {
              header ("Location: index.php?fehler=1");
          }

      }
      else
      {
        header ("Location: index.php?fehler=1");
      }

      ?>

      Kommentar

      Lädt...
      X