das Sonderzeichen: Suche nach Email in Ordner voller Textdokumente

Beitrag lesen

Danke für die schnelle Antwort

Ja, oder ein anderes DBMS, beispielsweise SQLite. Da sind solche Dinge wie Verhinderung doppelter Werte bereits eingebaut - nebst den ganzen anderen Sachen, wie Selektieren in allen Lebenslagen.

Ok danke für die Info. Ich wollte eh mich auch noch mit MySQL befassen, das hier sollte nur dazu dienen, etwas Gefühl für php zu bekommen.

Wieweit bist du mit dem Debugging? Wo genau ist denn in den Variableninhalten und Funktionsergebnissen etwas anderes enthalten als du erwartest? Debugging ist meist nervig, aber integraler Bestandteil der Programmierung. Du musst damit umgehen können. Baue var_dump()-Aufrufe ein, um dir Variableninhalte anzeigen zu lassen. Willst du wissen, ob das Programm hierlang oder dalang rennt, baue Ausgaben in if- und else-Zweige ein, die dir das anzeigen (alternativ: das Bedingungsausdrucksergebnis mit var_dump() anzeigen lassen).

Viele Aufrufe etc. wie var_dumb() kannte ich bisher noch nicht, aber ich werde es mir zu Herzen nehmen es öfters einzubauen. Ich schätze, ich befasse mich erst noch ein bisschen mit php und dann kommt MySQL. Daher werde ich vielleicht den Teil dann wieder durch MySQL ersetzen. Ich überprüfe noch einmal die Inhalte der Variablen um den Fehler zu finden.

Immer wieder (un)gern gesehen: das reine Umkopieren in einfache Variablen. Das ist nicht weiter sinnvoll, nimm doch gleich $_POST["email"].

Das ist zwar unnötig, aber ich fand es irgendwie schöner einfache Variablen zu nutzen, da es einheitlicher aussieht. :D

Was hast du nun in $string (ein übrigens nicht sehr aussagekräftiger Variablennanme) drinstehen?
(Und: glob() liest Verzeichnisse ohne die ./.. mitzuliefern.)

Ich weiß, dass $string ein nicht sehr aussagekräftiger Variablenname ist, aber er sollte mich schlichtweg daran erinnern, dass dieser Schritt nur zum Umwandeln von den bei scandir rausgekommenen Arrays in die String Form gedacht ist.
In $string habe ich jetzt die Dateinamen von den Textdateien in String Form hintereinander weg.

Und was bezweckst du mit der Dateinamensuppe in fopen(), das gern einen einzelnen Dateinamen haben möchte?

Der Dateiname sollte nicht einer sein, sondern es sollten eigentlich mehrere Dateien sein.
Ich weiß auch das fopen nur eine Datei öffnen kann und das somit schon nicht funktionieren kann, aber ich hatte zu Probe nur eine Textdatei im angegeben Pfad.

Die Syntax eines Funktionsaufrufs als Suchmuster für einen regulären Ausdruck? Ich kann dir schonmal sagen, dass der Inhalt von $emailexists nur unter ziemlich seltenen Umständen auf den Suchtext "email: $addressee" passt. In anderen Worten: das ist, wie du selbst sagtest, Mist.

In der einen Textdatei, mit der fopen fread und fclose eigentlich umgehen sollte, stand:
email: (das was ich später in der Registrierung nochmal eingegeben habe)
Also sollte, so wie ich mir das gedacht habe, preg_match die eingegebene E-Mail Adresse in dem Textdokument finden und somit was anderes (!=) als FALSE angeben, sodass die Bedingung zutrifft und man somit auf die error Seite umgeleitet wird.

Für einfache Vergleiche braucht man keine regulären Ausdrücke, da reicht ein simples ==.

Muss bei == nicht exakt das gleiche auf beiden Seiten stehen und bei preg_match nur der Suchbegriff in der Datei vorkommen?

Dein Problem ist aber, dass dir (derzeit noch) das Verständnis fehlt, was fopen() und fread() macht.

Ich dachte, dass fread fopen einfach braucht und fread den Inhalt eines Textdokumentes liest und später als String ausgibt. Könntest du mir vielleicht die richtige Funktion von fopen und fread erklären.

Wenn du hier weitermachen willst und doch nicht mit SQL anfangen willst, nimm lieber file_get_contents().

Ich werde wie gesagt zumindest noch versuchen die Fehler/den Fehler zu beheben, aber dann auch mit SQL anfangen. Und danke für den Tipp. Mir fehlt eben noch das Wissen, welche Befehle ich besser nutzen kann oder was es überhaupt gibt.^^

Gruß

das Sonderzeichen