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

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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

    Comment


    • #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");
      }

      ?>

      Comment

      Working...
      X