[PHP] - Userprofil auslesen, ändern und speichern!



  • HI alle!

    Mal ein grössres, ggf. eine etwas grössere Frage:

    1. Ich habe Userdaten in Form wie:
    *
    username|password|email|Rname|vorname|strasse|wohnort|icq|alter*

    in einer Datei gespeichert. Dessen Dateiname ist abhängig vom username, also conf.USERNAME.txt! Der Code zum speichern in die Datei:

    $wohnort = $plz.' '.$ort;
    $conf_name = 'config.'.$username.'.php';
    $conf_file = $dir.$conf_name;
    $handle = fopen($conf_file, "w+");
    $data = $username."|".$password."|".$email."|".$Rname."|".$vorname."|".$strasse."|".$wohnort."|".$icq."|".$alter."\n\n";
    fwrite($handle, $data);
    fclose($handle);
    

    Gut und recht. Doch WIE lasse ich in einem LEEREN Formular mit feldern wie Name, Vorname etc.. genau DESSEN Daten, abhängig vom usernamen in den feldern anzeigen?
    Ähnlich wie beim Profil in diesem Forum.

    2. Wie lasse ich dann die geänderte Daten/Texte in dessen Feldern mit dem Klick auf "Speichern" in der Datei, abhängig vom Username, aktualisieren, also überschreiben?

    Hatte mal zwar ein paar wenige sources dazu, aber finde ich seit 5 wochen nicht mehr, keine ahnung mehr wies geht!
    Wäre um jede Hilfe froh,

    Danke,
    mfg
    Pro



  • 1. Die Daten kannst du so einlesen:

    <?
    $datei = fopen("conf.test.txt", "rw");
    $daten = fgets($datei);
    $daten=explode("|",$daten);
    
    $name = $daten[0];
    $passwort = $daten[1];
    ...
    ?>
    

    Danach hast du ein Array, in deinem Fall mit 9 Elementen ($daten[0] - $daten[8]).

    2. Danach einfach das alte File überschreiben mit den neuen Daten.



  • CarstenJ schrieb:

    1. Die Daten kannst du so einlesen:

    <?
    $datei = fopen("conf.test.txt", "rw");
    $daten = fgets($datei);
    $daten=explode("|",$daten);
    
    $name = $daten[0];
    $passwort = $daten[1];
    ...
    ?>
    

    Danach hast du ein Array, in deinem Fall mit 9 Elementen ($daten[0] - $daten[8]).

    2. Danach einfach das alte File überschreiben mit den neuen Daten.

    Danke. wenn ich dich also richtig verstanden habe gehts auch so: =???!

    <?php
    $datei = fopen("conf.test.txt", "rw");
    $daten = fgets($datei);
    $daten=explode("|",$daten);
    
    echo '<form action="change_Save.php" method="post">';
    echo '<input type="text" name="name_new" value="$daten[0]">';
    echo '<input type="text" name="vorname_new" value="$daten[1]">';
    ...
    ?>
    

    Das wäre das anzeigen.. ?;)
    in der change_Save.php müsste dann stehen:

    <?php
    $datei_ne = fopen("conf.test.txt", "rw");
    $daten_ne = fgets($datei_ne);
    $daten_ne=explode("|",$daten_new);
    
    $name_new = $daten_new[0];
    $vorname_new = $daten_new[1];
    
    fwrite($datei_ne, $daten_new);
    fclose($datei_ne);
    ....
    ?`>
    

    Interpretiere ich das so richtig???
    mfg
    Pro



  • Habe die Lösung!
    Mithilfe 3er Dateien!

    1. Datei: test.conf.php (natürlich CHMOD 777)
    2. Datei: testprofil.php (zeigt das aktuelle Profil an)
    3. Datei: change_Save.php (speichert NEU in gleiche Datei)

    test.conf.php

    Kurz|Dominic|Delfterstrasse 32|5004 Aarau|18|informatik_support@bluewin.ch|152260187|http://www.swiss-portal.com
    

    testprofil.php

    <?php
    $datei = fopen("test.conf.php", "r+");
    $daten = fgets($datei);
    $daten=explode("|",$daten);
    
    echo '<form action="change_Save.php" method="post">';
    echo '<table width="100%" boder="0" cellpadding="0" cellsapcing="0" rows="3">';
    echo '<tr><td>Name:</td><td>&nbsp;</td><td><input type="text" name="name_new" value="'.$daten[0].'"></td></tr>';
    echo '<tr><td>Vorname:</td><td>&nbsp;</td><td><input type="text" name="vorname_new" value="'.$daten[1].'"></td></tr>';
    echo '<tr><td>Adresse:</td><td>&nbsp;</td><td><input type="text" name="adresse_new" value="'.$daten[2].'"></td></tr>';
    echo '<tr><td>Wohnort:</td><td>&nbsp;</td><td><input type="text" name="wohnort_new" value="'.$daten[3].'"></td></tr>';
    echo '<tr><td>Alter:</td><td>&nbsp;</td><td><input type="text" name="alter_new" value="'.$daten[4].'"></td></tr>';
    echo '<tr><td>Email:</td><td>&nbsp;</td><td><input type="text" name="email_new" value="'.$daten[5].'"></td></tr>';
    echo '<tr><td>ICQ Nummer:</td><td>&nbsp;</td><td><input type="text" name="icq_new" value="'.$daten[6].'"></td></tr>';
    echo '<tr><td>Homepage:</td><td>&nbsp;</td><td><input type="text" name="homepage_new" value="'.$daten[7].'"></td></tr>';
    echo '<tr><td>&nbsp;</td><td>&nbsp;</td><td><input type="submit" value="Änderungen speichern"></td></tr>';
    echo '</form>';
    
    fclose($datei);
    ?>
    

    change_Save.php

    <?php
    $datei_new = fopen("test.conf.php", "w+");
    $daten_new = $name_new."|".$vorname_new."|".$adresse_new."|".$wohnort_new."|".$alter_new."|".$email_new."|".$icq_new."|".$homepage_new."\n\n";
    fwrite($datei_new, $daten_new);
    fclose($datei_new);
    echo "Erfolgreich geändert!";
    echo "<a href=\"testprofil.php\">hier ansehen</a>";
    ?>
    

    SO klappts bestens! Danke!
    Ich hab einfach nur das problem oder gefühl, "ich denke zuweit"! ? 😃 :p
    Wäre was fürs FAQ?
    mfg
    Pro



  • Ich weiss ja nicht, wie viele Daten du hast, aber vielleicht würde sich ein Blick darauf lohnen:

    http://www.sqlite.org

    Ist u. U. ökonomischer, da es bei 2 Mio. Usern mit Textdateien evtl. etwas unübersichtlich wird 😃



  • Nein :p
    Du solltest aber anstelle von $name_new etc. $_POST['name_new'] usw. verwenden, da die andere Variante voraussetzt, dass register_globals auf on ist und das ist auf vielen Server nicht mehr der Fall. Also, falls du PHP >= 4.1.0 laufen hast verwende möglichst immer $_GET, $_POST bzw. $_REQUEST, damit du es dir gleich richtig angewöhnst und du bei einem Umzug nicht so viel anpassen musst 😉



  • ok. thx !
    Auf jeden fall klappts!

    Testen

    http://www.swiss-portal.com/users/demo

    Benutzername: demo
    Passwort: test

    versteht sich, dass alles SELBST von EINEM einzigen Script erstellt wurde!
    Von mir bekannt auch als make_it.php, oder AWI! heisst aber nun install.php 😉


Anmelden zum Antworten