String in Datei ersetzen?



  • Hallo!
    Zum Vorigen Thema ...Crypt... habe ich nun ein PHP Code geschrieben, der die eingebenen Daten vom Formular $username und $passwort übergeben soll..

    Das Passwort wird natürlich wieder verschlüsselt, das neu eingebene.
    In user.txt steht z.B.

    Test|IT82amgf783Ts

    Und wenn man ein anderes Passwort eingibt oder benutzernamen, dann soll genau diese Zeile durch zB:

    Test|IT8902mnaaas2

    ersetzt werden! NICHT neu geschrieben etc, sondern nur diese ersetzt!

    Ich hab mal was geschrieben:

    <?php
    $schluessel = "IT";
    $password=crypt($password,$schluessel);
    
    include("user.txt");
     function php_format($string)
     {
      $string = str_replace("\"","\\\"",$string);
      $string = str_replace(chr(13),"",$string);
      return $string;
     }
    
        @$file = fopen("user.txt","w");
    
     fputs($file,"$username".chr(13)."\n");
    
     {
      @fputs($file,"|$passcrypt".php_format($description)."\";".chr(13)."\n");
     }
     @fputs($file,"");
    
     @fclose($file);
    ?>
    

    Am anfang ändert er mir den Eintarg, doch ein zweites mal steht anstatt
    Test|IT88222madfdd
    nur noch Test|"; und nichts mehr!!!! Also gehts net! $passcrypt ist das verschlüsselte Passwort, dass durch

    schluessel="IT";schluessel = "IT"; password=crypt(password,password,schluessel);

    verschlüsselt wird.
    In User.txt sind bzw. mehrer uSer:

    Test|IT99922mas
    Kurz|99022kdd
    hehe|kkmasda29

    Wenn der Benutzername "Test" eingeben wurde, soll er das verschlüsselte Passwort nach Test| durch das neue passwort ersetzen! Und sonst NICHTS!

    Wie geht denn das? Danke für eure hilfe zum voraus.
    mfg
    Programmer 😕 🙄



  • Wenn du nicht immer alles neu schreiben willst muss, so würde ich denken, dein Passwort immer gleich lang sein! Dann musst du in einer Schleife Zeile für Zeilen durchgehen, und überprüfen ob der Benutzername übereinstimmt (dieser muss dann natürlich einmalig sein) Dann überschreibst du diese Zeile.



  • ok. aber wie geht das??

    foreach(in_array($username))
    {
    $username.chr(13)."\\";
    }
    

    irgendwie so? 😉



  • Beantworte erstmal meine Fragen:
    - sind die Passwörter in der Länge einheitlich (z.B. bei md5 immer 32 Zeichen)
    - sind die Benutzernamen eindeutig (wenn nein, welches Passwort soll ersetzt werden)
    - wie viele Benutzer hast du vor zu verwalten - würde sich eine Mini-Datenbank lohnen



  • Original erstellt von flenders:
    - wie viele Benutzer hast du vor zu verwalten - würde sich eine Mini-Datenbank lohnen

    Eben, eine schöne Mysql Datenbank würde das Problem ganz einfach lösen. 😉

    cu
    Hexa



  • 1. Ja, sie sind in einer Einheitlichen Länge/Grösse
    2. Ja, die Benutzernamen sind eindeutig. Es können KEINE zwei gleichen Benutzernamen erstellt werden.... 😉

    3. Kommt ganz darauf, wie viele Mitglieder sich registrieren... zwischen ca. 10-50.. nicht mehr..

    3.a)
    Nein, eine mini-Datenbank würde sich nicht lohnen... Ausser es wäre OHNE MySQL... 😉



  • Original erstellt von Hexa:
    **Eben, eine schöne Mysql Datenbank würde das Problem ganz einfach lösen. 😉

    cu
    Hexa**

    Gut und Recht aber:

    Mein HOSTER unterstütz KEIN MySQL!!! und ich wechsle nicht auf einen, der MySQL unterstütz. Warum? Weil mein Hostern UNLIMITET Webspeicherplatz gibt! Einfach so, obwohl es nur 30 wären! 😉 *ne, nich einfach so...* hab ihm ein Prog geporggt. in MCF.. 😉



  • <?
    function UpdatePassword($username,$oldPassword,$newPassword)
    {
     $fp = fopen("userlist.txt", "r+");
     $return = 0;
     while(!feof ($fp))
     {
      $pos = ftell($fp); 
      $line = fgets($fp, 1024);
    
      preg_match("/([^|]*)\|([^|]{13})/",$line,$user_data);
    
      if ($user_data[1] == $username)
      {
       if ($user_data[2] == crypt($oldPassword,"IT")) {
        fseek($fp,$pos);
        $string = $username."|".crypt($newPassword,"IT");
        fwrite($fp,$string);
        $return = 1;
        break;
       } else {
        $return = -1;
        break;
       }
      }
     }
     fclose ($fp);
     return $return;
    }
    
    switch( UpdatePassword($username,$oldPassword,$newPassword) )
    {
     case 1:
      echo "Erfolgreich aktualisiert!";
      break;
     case 0:
      echo "User nicht gefunden!";
      break;
     case -1:
      echo "Falsches Passwort!";
      break;
    }
    ?>
    


  • Thx, Flenders!
    Ich werde es mal testen. Wenn es funzt, werde ich es noch nen Bisschen umbauen... 😉 oder erweitern.


Anmelden zum Antworten