[PHP] Variablen überprüfen in PHP

Foickert

Well-known member
9 August 2006
59
0
Hey Leute,

ich möchte gerne die Angaben unserer User, die sich angemeldet haben, daraufhin überprüfen, ob (zB. im Vornamen) drei oder mehr gleiche Buchstaben hintereinander vorkommen.

Somit können Fake-Einträge wie zB. eine Strasse namens "fffffffff" unterbunden werden.

Leider weiß ich nicht, wie die entsprechende Zeile in PHP auszusehen hat.

Besten Dank für eure Hilfe!!!

Grüße, Markus
 
Mit Regexp dürfte das gehen.. bin mir aber grad nicht ganz so sicher wie.
Also sowas wie folgednes könnte unter Umständen funktionieren, allerdings bin ich nicht so gut bei RegExps.

PHP:
preg_match('/[([a-zA-Z0-9]{1})]{3,}/', $input_string);

Das kann jetzt total falsch sein, aber meine Logik sagt mir irgendwie so muss des doch funzen..
 
Hallo Astrodan,

da kommt leider folgende Fehlermeldung bezüglich der Zeile bei raus:

Code:
Warning: preg_match() [function.preg-match]: Compilation failed: unmatched parentheses at offset 16

Man sollte auch bedenken, dass ein und derselbe Buchstabe 3 Mal in der Variable vorkommen darf, jedoch nicht 3 Mal (oder häufiger) direkt hintereinander!
 
Okey, vllt. so:

PHP:
preg_match('/[([a-zA-Z0-9]\d{1})]{3,}/', $input_string);

ansonsten les dir mal die Pattern Syntax durch, vielleicht hilft dir das ja.

Oder du wartest einfach, bis jemand antwortet, der das besser kann.

Edit: Ich glaub man kann die eckigen Klammern sogar weglassen:

PHP:
preg_match('/([a-zA-Z0-9]\d{1}){3,}/', $input_string);

Edit 2: Wenn man sich den Unterschied Groß-/Kleinschreibung sparen will:

PHP:
preg_match('/([a-z0-9]\d{1}){3,}/i', $input_string);
 
Astrodan schrieb:
/([a-z0-9]\d{1}){3,}/i
f7f1f6r7 8) Coole Adresse :ugly:

Irgendwas passt ned so ganz. Was hast du dir gedacht ?

Allgemein: Du kannst ne Adresse ned wirklich prüfen. Maximal kannst du verlangen, dass ne Hausnummer drin vorkommt und die kannst du auch seperat als Zahl abfragen.
 
@ Astrodan: Danke für den erneuten Versuch. Die Fehlermeldung ist zwar verschwunden, aber leider klappts trotzdem noch ned.

@ theHacker: Das mit der Strasse war ja nur ein Beispiel. Aber es ist doch sinnvoll zB. einen Vornamen zu überprüfen, ob "rrrrrrrrr" in das Textfeld eingegeben wurde oder irgendwas sinnvolles.

Leider komm ich mit der Pattern Syntax nicht weiter..
 
Also obwohl ich kein Experte in Deutsch bin, glaube ich, dass mit der Rechtschreibreform Wörter entstanden sind, in denen drei mal der selbe Buchstabe hintereinander vorkommt. (Hab aber grad kein Bsp. parat.) Damit könnte es in Zukunft Straßen geben, in denen drei mal der selbe Buchstabe hintereinander steht - und das ganze ist echt.

So. Hab mal bei Google geschaut und tatsächlich ein Wort mit drei f Hintereinander gefunden: Schifffahrt
Also könnte es einen Schifffahrtsweg geben -> Problem!

Wie theHacker schon bemerkt hat, gibts keine Möglichkeit, eine Adresse komplett zu prüfen. Man könnte höchsten Teile davon prüfen, z.B. PLZ/Ort. Dafür gibts Datenbanken, die man sich im Netz besorgen kann. Ob ne Hausnummer vorhanden ist (es gibt aber auch Hausnummer mit Zahl und Buchstabe drin! Habe selber mal in 5A gewohnt.). Ja. Das wars schon.

Und wenn ich meine Adresse partout nicht angeben will, dann nehm ich eine, die es in einer anderen Stadt gibt. Wer kann den Nachprüfen, ob ich da tatsächlich wohne. Gleiches gilt für den Namen. Dann bin ich halt ein Karl Meier.

Die Frage ist also, ob sich der ganze Aufwand wirklich lohnt. Oder ob die Adresse des anderen nicht eigentlich egal ist. (Ich nehme mal an du willst ihm nix zuschicken und auch die Adresse nicht für Werbezwecke weiterverkaufen.)
 
@ theHacker: Das mit der Strasse war ja nur ein Beispiel. Aber es ist doch sinnvoll zB. einen Vornamen zu überprüfen, ob "rrrrrrrrr" in das Textfeld eingegeben wurde oder irgendwas sinnvolles.
Bei solchen Fällen hast du nur die Möglichkeit, eine Datenbank zu benutzen (enormer Speicheraufwand ! außerdem kann es schiefgehen, wenn sich was ändert. Bsp: klamm, eine BLZ hat sich geändert, jemand wollte auf sein Konto auszahlen lassen und klamm habe daraufhin behauptet, dass es die Bank nicht gibt - freilich, in der DB war die BLZ noch nicht, der User hat dann Pech gehabt, weil er nichts eingeben kann) oder eben ungeprüft durchgehen zu lassen.
Es reicht, wenn du prüft, dass wenigstens ein Buchstabe im Feld is. Mehr kannst du ned.

Astrodan's RegExp hätte meine echte Adresse nicht mal zugelassen, weil ich ein Leerzeichen in der Anschrift hab, außerdem n Punkt benutzt hätte "[...]str.".
Also obwohl ich kein Experte in Deutsch bin, glaube ich, dass mit der Rechtschreibreform Wörter entstanden sind, in denen drei mal der selbe Buchstabe hintereinander vorkommt.
Um Dreifachbuchstaben ging es doch nicht mal :mrgreen:

Ich würde einfach sowas machen:
PHP:
if(isset($_POST['street']) && strlen($_POST['street'])>=1)
  ok();
 
Hallo Sebbo,

danke dass du so eifrig mitdenkst, aber es geht lediglich darum, Vornamen und Nachnamen zu checken!!!!

War doof von mir, dass ich im ersten Beitrag von "Strasse" gesprochen habe.
Sorry!

Ok, vielleicht gibt es irgendeinen Jamaikaner, der 3 gleiche aufeinanderfolgende Buchstaben im Namen hat. Dann ist das aber nur ein großer Zufall. Zugleich haben sich aber 50 User mit Fake-Namen angemeldet!

@ theHacker: Danke für den Vorschlag zur Überprüfung der Variable. Aber solche Checks hab ich bereits eingebunden!!!!

Mir geht es wirklich genau darum, dass man 3 gleiche aufeinanderfolgende Buchstaben erkennt. Da muss PHP doch was anzubieten haben, oder?!

Und bitte kommt von der blöden Variable mit der Strasse weg ;)
 
Mir geht es wirklich genau darum, dass man 3 gleiche aufeinanderfolgende Buchstaben erkennt.
Ging also doch um Dreifachbuchstaben :D

Wobei es dir eigentlich auch nicht um Dreifachbuchstaben geht, sondern darum, dass wirklich seine/ihre richtigen Daten (Name) angibt.
Da kannst du dir noch so viele Checks in PHP einfallen lassen. Du bekommst es nicht raus!

Wenn du wirklich, ganz unbeding, auf jeden Fall, absolut und wirklich wirklich die echten Daten brauchst, dann lass dir ne Kopie des Personalausweises faxen. (Oder nutze PostIdent, weiß bloß nicht wie teuer das ist.) Ansonsten weißt du nie, ob die richtigen Daten angegeben wurden.

Es ist nämlich völlig egal, ob ich folgendes Eintrage (mal als Bsp.):
Karl Meier
Kurzer Weg 3
67435 Neustadt

Oder
Sebbo Werauchimmer
fffff 12
77777 Egalwas

Oder
Monika Mustermann
Musterstrasse 1
12345 Musterstadt

Ist alles nicht meine Adresse. Den zweiten oder dritten Fall könnte man per PHP ausschliessen. Den ersten aber nicht. Es sei denn ich muss dir eine Kopie meines Ausweises faxen, dann würdest du feststellen, dass es nicht stimmt.

Bleibt die Frage, warum du wirklich wirklich die richtigen Daten wissen willst. Es gibt ja auch sowas wie Datenschutz. Zumindest hoffe ich, dass es den wenigstens in Ansätzen noch gibt. Und solange du keinen Shop betreibst (was anderes fällt mir grade nicht ein), brauchst du die Adresse nicht. Und in dem Fall hat der Nutzer ja auch ein Interesse, die richtige Adresse anzugeben, sonst kommt die Ware ja nicht an.

Als Alternative zur Kopie des Personalausweises könntest du noch einen Brief schicken. Der Nutzer muss dann einen darin enthaltenen Code in die Webseite eingeben. Das macht (oder hat zumindest) Web.de so.