Tom1tk: Array nur einmal in txt-Datei speichern

Beitrag lesen

Hallo zurück,

ich hab das selbige schon mal für nen Newsletter geschrieben: Ich speichere hier die Personen-Daten in nem Array in nem Text-File:

<?php $benutzer[]=array(id=>"0",name=>"Peter",email=>"peter@peter.de"); ?>
<?php $benutzer[]=array(id=>"1",name=>"Heinz",email=>"Heiz@peter.de"); ?>
<?php $benutzer[]=array(id=>"2",name=>"Max",email=>"Max@peter.de"); ?>

Dieses Textfile (user_daten.php) speicherst Du ausserhalb deines HTTP_Roots, damit keiner damit Unfug machen kann.
Bei einer Neueintragung geht das dann so:

foreach($benutzer as $lauf_id){
if ($lauf_id[email]==$forumular_email)$nachricht="Du bist schon eingetragen";
}

/*
.
.
.

HIER WEITERE ABFRAGUNGEN z.b. EMAIL OK???? Alle im Fehlerfall $nachricht="Fehler....";
.
.
.
.
*/

if ($nachricht==""){//Falls $nachricht NICHT leer ist, wird nix geschrieben
//Textfile öffnen und eine neue Zeiel hinzufügen (komplett mit <?php  ?>
//z.B.

$eintragungs_id ="0";
$eintragungs_id=count($benutzer);
#Datei öffnen
$data = fopen("../pathToDir/user_daten.php","a+");
  flock($data,LOCK_SH);
  $daten = "<?php $beutzer[]=array(id=>"$eintragungs_id",name=>"$name",email=>"$email");?>\n";
 #Daten schreiben
  fwrite ($data,$daten);
  unset ($daten);

#Newsletterdatei schließen
 flock($data,LOCK_UN);
 fclose($data);
}

Klar soweit? Ich speichere dann noch ein Datum im Array, verschiedene andere Benutzerdaten usw.... Je nach Lust und Laune...

Dann die Ausgabe in deiner HTML Seite:

#Erstmal Daten includen
include "../pathToDir/user_daten.php";

#Dann ausgeben
foreach ($benutzer as $id){
##Hier Abfragen, welche id's ausgegeben werden sollen z.B.
if ($schluessel[id]!="0" && $schluessel[id]!=""){
print ("Name: ".$id[name]."   Email: ".$id[email]."<br>\n");
}//Ende if
}//Ende foreach

Dann wird dir ne Liste mit allen Eingetragenen ausgegeben, aber nur Name und EMail, kein Datum, keine IP, und was Du sonst noch alles so mit abspeichern möchtest.

Bie mir funktioniert das wunderbar. Ach ja, Du kannst Deinen Benutzern dann auch die Möglichkeit geben sich wieder rauszulöschen, dann eben das ganze TExtfile neu schreiben, und sobald $benutzer[email]==$formular_email, dann schreibst Du ne leere Zeile (oder gar nix)....

Greets Tom1tk

Hoffe das hilft weiter...

Bei Fragen kannst mir auch ne E-Mail schicken, KEIN SPAM