kostenloser Webspace werbefrei: lima-city


Txt-Datei wird nicht richtig ausgelesen!

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    programtools

    programtools hat kostenlosen Webspace.

    Hi
    Ich stehe vor einem Großen Problem!!

    Ich lese mit folgendem php-script eine Textdatei aus (users.txt):
    $username = $_POST["user"];
    $passwort = $_POST["passwort"];
    
    if(($username != "" OR $username != "Benutzernamen eingeben") AND ($passwort != "" OR $passwort != "Passwort eingeben"))
       {
       $pass = md5($passwort);
       $saveuser = md5($username);
    
    
       $datei = file("users.txt");
    
       foreach($datei AS $ausgabe)
          {
          $zerlegen = explode("|", $ausgabe);
    
    
    
    
          if($zerlegen[0] == $username AND $zerlegen[1] == $passwort)
             {
             $login = "e";
             }
          else
             {
             $login = "ne";
             }
       
          }
    
       }


    wenn $login dann "e" ist ,dann ist man eingeloggt.

    die Datei users.txt sieht so aus:
    username1|passwort1
    username2|passwort2
    username3|passwort3


    Das Problem ist jetzt, dass mein Script immer nur den letzten usernamen und das letzte Passwort ausliest.
    Wenn ich also in das Formular als Benutzername
    username1 und als passwort passwort1 eingebe dann klappt das nicht. Wenn ich aber username3 und passwort3 eingebe dann klappts.

    Ich dachte das könnte daran liegen, dass nach passwort1 und passwort2 noch ein Zeilenumbruch kommt aber was soll ich da machen??

    Hoffe ihr könnt mir helfen!
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. desaster-productions

    desaster-productions hat kostenlosen Webspace.

    das liegt daran, dass du nach dem finden eines gültigen usernamens nicht aus der schleife rausgehst. das scipt geht weiter und setzt die variable $login beim nächsten durchlauf wieder auf "ne"
  4. r*s

    Genau desaster-productions hat recht. (und ich rätsel hier 10 Minuten rum...)

    Naja und dieses Rausgehen funktioniert mit break. Außerdem kannst du dein Script noch optimieren, indem du nicht bei jedem Durchgang die Variabel $login erneuerst, das verursacht nur unnötige Serverlast.

    $username = $_POST["user"];
    $passwort = $_POST["passwort"];
    
    if(($username != "" OR $username != "Benutzernamen eingeben") AND ($passwort != "" OR $passwort != "Passwort eingeben"))
       {
       $pass = md5($passwort);
       $saveuser = md5($username);
    
    
       $datei = file("users.txt");
       $login="ne";
       foreach($datei AS $ausgabe)
          {
          $zerlegen = explode("|", $ausgabe);
    
    
    
    
          if($zerlegen[0] == $username AND $zerlegen[1] == $passwort)
             {
             $login = "e";
             $break;
             }
       
          }
    
       }
  5. Autor dieses Themas

    programtools

    programtools hat kostenlosen Webspace.

    Vielen dank, aber entweder bin ich zu doof oder das klappt immernochnicht.
    Nur wenn ich den letzten Eintrag nutze dann bin ich eingeloggt. bei den vorherigen nicht. Also denke ich dass es vielleicht daran liegt, dass das was ausgelesen wird mit den eingaben nicht übereinstimmt obwohl beides gleich ist. Und dass macht doch keinen Sinn oder?? Hoffe es gibt da eine Lösung!!
  6. desaster-productions

    desaster-productions hat kostenlosen Webspace.

    ganz einfacher test: mach doch mal in der schleife drinnen ein echo und sieh nach, was eingelesen wird ;)
  7. Autor dieses Themas

    programtools

    programtools hat kostenlosen Webspace.

    naja an jeden ausgelesenen String werden noch 1-2 Leerzeichen angehängt aber sonst ists genau gleich!
  8. desaster-productions

    desaster-productions hat kostenlosen Webspace.

    also du hast jetzt ein echo da drin gemacht und es wird definitiv alles aus der datei im browser ausgegeben?
  9. Autor dieses Themas

    programtools

    programtools hat kostenlosen Webspace.

    Jop!
    Die gesammte datei wird ausgegeben und ich kann mich nur mit dem Benutzernamen und Passwor einloggen was an letzter Stelle in der Datei steht ansonsten klappts nicht!
  10. desaster-productions

    desaster-productions hat kostenlosen Webspace.

    mekwürdig. kannst nochmal den code posten, so wie er jetzt im moment ist?
  11. Autor dieses Themas

    programtools

    programtools hat kostenlosen Webspace.

    $username = $_POST["user"];
    $passwort = $_POST["passwort"];
    
    if(($username != "" OR $username != "Benutzernamen eingeben") AND ($passwort != "" OR $passwort != "Passwort eingeben"))
       {
       $pass = md5($passwort);
       $saveuser = md5($username);
    
    
       $datei = file("users.txt");
       $login="ne";
       foreach($datei AS $ausgabe)
          {
          $zerlegen = explode("|", $ausgabe);
    
    echo "$zerlegen[0] -- $zerlegen[1]";
    
    
          if($zerlegen[0] == $username AND $zerlegen[1] == $passwort)
             {
             $login = "e";
             $break;
             }
       
          }
    
       }
  12. desaster-productions

    desaster-productions hat kostenlosen Webspace.

    probiers mal so:

    $username = $_POST["user"];
    $passwort = $_POST["passwort"];
    
    if(($username != "" OR $username != "Benutzernamen eingeben") AND ($passwort != "" OR $passwort != "Passwort eingeben"))
       {
       $pass = md5($passwort);
       $saveuser = md5($username);
    
    
       $datei = file("users.txt");
       $login="ne";
       foreach($datei AS $ausgabe)
          {
          $zerlegen = explode("|", $ausgabe);
    
    echo "$zerlegen[0] -- $zerlegen[1]";
    
    
          if(trim($zerlegen[0]) == $username AND trim($zerlegen[1]) == $passwort)
             {
             $login = "e";
             $break;
             }
       
          }
    
       }




    edit:
    noch was anderes. dein if ganz am anfang ist wirkungslos. die bedingung evaluiert immer zu true, egal was man eingibt.

    Beitrag zuletzt geändert: 28.11.2009 17:52:52 von desaster-productions
  13. Autor dieses Themas

    programtools

    programtools hat kostenlosen Webspace.

    WOW Super!!! Jetzt klappts!! Mit trim entfernt man Leerzeichen oder?? Also nochmal vielen Dank jetzt klappt alles wiels klappen soll!!!
  14. desaster-productions

    desaster-productions hat kostenlosen Webspace.

    schön das es klappt :-)

    ja, und alle möglichen anderen whitespaces wie z.B. zeilenumbrüche. also hast du eigentlich schon in deinem ersten post recht gehabt ;)
  15. Autor dieses Themas

    programtools

    programtools hat kostenlosen Webspace.

    Super! Ja ich habs mir gedacht weil es nur beim Letzten geklappt hat und das der einzigste war nach dem kein Zeilenumbruch kam. Aber ich wusste nicht wie ich das wegmachen sollte...
    Also vielen Dank nochmal!!
  16. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!