Textdatei auf Wiederholungen durchsuchen

ronaldo84

Erfahrenes Mitglied
Hallo

Ich habe eine HTML Formular. In diesen werden daten wie Name, Vorname, Adrese etc. geschrieben. Diese daten werden dann an eine PHP Datei gesendet. Diese PHP Datei schreibt sie nun in eine txt. Das Problem ist ich möchte das sich ein Benutzer nur einmal unter einem Namen anmelden kann. d.h. ich muss also die txt daraufhindurchsuchen ob der nun eingegbene Name nicht bereits drin steht. Zuerst wollte ich dies mit einem Array machen und einem Zähler.
PHP:
for($x=1; $x<= $anzahl; $x++)
{ if(name[$x] == name[$anzahl]) 
{echo "bla";}}
Dies hat nicht geklappt da dann irgendiwe Probeme damit auftraten die Daten in die Txt einzutragen. Habe mich nun für folgende While Schleife entschieden:
PHP:
function read_file ($bookfile){
$fd = fopen($bookfile, "r");
while (!feof($fd).....}
.
Habe aber nun keine Idee wie ich die txt nach den Namen durchsuche kann. Bräuchte deshalb von euch vielleicht ein paar denkanstösse.

MFG

ronaldo84
 
Naja du wirst es doch irgenwie gespeichert haben, z.b. durch ; getrennt.
Nehme wir als Beipiels $name enthält den neu einzutragenden Namen, pro datenzeile sind Einträge wie name etc. durch ein ; getrennt und Name steht an erster Stelle.
Also ist es die Aufgabe die Datei von vorne bis hinten durchzulaufen. Jede Datenzeile zu zerlegen nach dem ; um an jedes Datenfeld zu kommen. Anschliessen entsprechende Datenfelder vergleichen und das wars.

Also in deine Schleife (while) folgnedes rein:

PHP:
$name = "bla"; //hier am besten auch strtolower anwenen wegen späterem verlgeich
//fgets -> Zeile auslesen
//trim leerzeichen und co falls vorhanden abschneiden
//strtolower in Kleinbuchstaben umwandeln für besseres vergleichen
//Diesen String in ein Array zerlegen, trennzeichen ; (-> explode)
$row = explode(';', strtolower(trim(fgets($fh))));
//$row[0] würde dem Name entsprechen
if( $row[0] == $name )
   die('Dieser User ist bereits angemeldet');
 
Wow danke erstmal für deine schnelle hilfe.
Habe deinen Queltext eingebunden,
PHP:
function read_file ($bookfile){
$fd = fopen($bookfile, "r");
while (!feof($fd)) { 		 
$row = explode('|', strtolower(trim(fgets($fd)))); 		 
if( $row[0] == $benutzername ) 	 
die('Dieser User ist bereits angemeldet');	 
}
fclose ($fd);
}
Das Problem ist das er es jetzt bei jedem eingegebenen Namen sagt. Die txt kann auch leer sein und trotzdem wird die Meldung ausgegeben.
Ein weiter Problem ist dann noch das die Meldung zwar ausgegeben wird aber der Name trotzdem noch in die txt geschrieben wird.

Kenne mich mit php nicht so aus..:-(
 
Bei einer leeren Datei ist das logisch.
Denn du rufst die Funktion auf, aber $benuitzername ist nicht bekannt (es sei denn du Progrmamierst mit register Globals = on). Besser wäre es der funktion zu übergeben
oder via $_POST bzw $_GET (z.b. $_POST['benutzername']) auslesen.

Zum debuggen einfach mal var_dump($row) o.ä. ausgeben...
 
Habe mir jetzt mal $_get bzw. $_post angeschaut. Aber es funktionier leider immer noch nicht. Habe schon folgendes Schreibweisen ausprobiert
PHP:
 if(isset($abschicken))
{ 
if (.......){
var_dump($_post['benutzername']);
var_dump($_post["benutzername"]);
var_dump($_get['benutzername']);
var_dump($_get["benutzername"]);
var_dump($benutzername);}
else {
Die IF Bedingung ist in diesem Fall nicht wichtig.

Die Ausgabe sieht so aus :
NULL NULL NULL NULL string(4) "hans"
Was kann ich machen? Hat jmd. eine Idee?
 
Zuletzt bearbeitet:
Zurück