Daten werden beim Aktualisieren gelöscht!

Loddar1

Erfahrenes Mitglied
Schönen Sonntag,
Ich möchte in einer Datei nur das Passwort vom Admin ändern also ID 1,
klappt auch wunderbar soweit,
nur ist der Rest der Datei nicht mehr vorhanden.
Die Datei sieht so aus:

1|Admin|7651320fc8fd972af966e40752ddcecc|Administrator|
2|Beta|e22a63fb76874c99488435f26b117e37|Betaname|beta@mail.de|
3|Gamma|f26b117e37874c99488435s84b117e47|Gammaname|gamma@mail.de|
usw.

Mein code zum ändern des Passwortes so:
PHP:
<?php
if (isset($_GET['action'])) $action = $_GET['action'];
if($_SESSION['username']=='Admin'){
$uid = $_POST["uid"];
$username = $_POST["username"];
$password = $_POST["passwort"];
$password2 = $_POST["passwort2"];
$realname = $_POST["realname"];
$email = $_POST["email"];
$isuser = array();
$passwort = md5($password);
$userdatei = fopen ("verz/daten.db","r");
while (!feof($userdatei)){
$dat = fgets($userdatei,500);
$userdaten = explode("|", $dat);
array_push ($isuser,$userdaten[1]);}
fclose($userdatei);
if ($action == "save"){
if ($password == $password2){
$userdatei=file("verz/daten.db");
$num = sizeof($lines);
if ($num) {
$entry = explode ("|", $lines[$num-1]);
$uid = $entry[0]+1;
} else $uid = 1;	
$userdatei = fopen ("verz/daten.db","w");
rewind($userdatei);
fwrite($userdatei, "1");
fwrite($userdatei, "|");
fwrite($userdatei, "Admin");
fwrite($userdatei, "|");
fwrite($userdatei, $passwort);
fwrite($userdatei, "|");
fwrite($userdatei, "Administrator");
fwrite($userdatei, "|");
fwrite($userdatei, "\n");
fclose($userdatei);
}else echo'Die Passwörter stimmen <strong>nicht</strong> überein!';
}
$userdatei = fopen ("verz/daten.db","r");
while (!feof($userdatei)){
$dat = fgets($userdatei,2);
$userdaten = explode("|", $dat);
array_push ($isuser,$userdaten[1]);}
fclose($userdatei);
?>
<form action="index.php?page=edit&amp;action=save" method="post">
<p>Passwort:<br />
<input  type="password" size="35" name="passwort" value="" /></p>
<p>Passwort wiederholen:<br />
<input  type="password" size="35" name="passwort2" value="" /></p>
<p><input class="formulbut" type="submit" value="&Auml;ndern" /></p>
</form> 
<?php
} ?>

Sieht einer von euch warum nur die Zeile die ich eingebe nach dem Passwort ändern zu sehen ist?

Danke im voraus freue mich über jede Hilfe
 
Hallöle,

das ist eigentlich ein ganz einfacher Patzer, der dir da unterlaufen ist - und zwar in dieser Zeile:
PHP:
$userdatei = fopen ("verz/daten.db","w");

Dadurch, dass du das File im Modus "w" öffnest, wird deren Inhalt gelöscht und der Zeiger auf den Dateianfang gesetzt.
Was du suchst, dürfte der Modus "a" bzw. "a+" sein.

PHP:
$userdatei = fopen ("verz/daten.db","a");

Hier mal noch ein Link zum Nachlesen: fopen

Da fällt mir auch noch was anderes ein:
Du solltest in dem Falle vllt. versuchen, die entsprechende Zeile in der Datei erst zu suchen, dann zu löschen und dann erneuert wieder einzufügen, denn ein "Update" im eigentlichen sinne wird nicht möglich sein - nur doppelte Einträge....
 
Zuletzt bearbeitet:
Danke Alex,
und wie macht man das mit dem Filtern?
werde es erstmal selbst probieren, wie bei einem Gästebuch eintrag editieren.
 
Zurück