phpbar.de logo

Mailinglisten-Archive

[php] Re: [php] =?iso-8859-15?q?Formular=FCberpr=FCfung?=

[php] Re: [php] Formularüberprüfung

Gerhard Feiner php_(at)_phpcenter.de
Thu, 12 Jul 2001 15:21:07 +0200


On Thursday 12 July 2001 15:02, Thomas Beckmann wrote:
> >> > Hallo zusammen,
> >
> >[...]
> >
> >Weiss da wirklich keiner was zu ?
>
> Wozu ?
>
> ---
> Thomas Beckmann, Kiel, Germany
> beckmann_(at)_gis.de

OK, da ich scheinbar der Einzige bin, der diese Mails erhalten hat, 
fasse ich den Thread hier kurz zusammen:

Die urspruengliche Mail kam von Ithmar Garbe:


Hallo zusammen,

wieder einmal bereitet mir ein Skript Kopfzerbrechen:

Ich möchte Adressfelder, die von einem Formular überprüft werden, in
eine Datenbank speichern. Nun gibt es ja Leute, die Spasshalber
irgendwelche Daten eingeben, und damit die Datenbank zumüllen. Deswegen
versuche ich, solche Spässlein zu finden und zu verbieten.
Beispielsweise überprüfe ich, ob der Name die Zeichenkette "asdf"
enthält, die man ja ziemlich gern, oft und schnell eintippt.
Das funktioniert auch sehr gut, allerdings möchte ich noch einen Schritt
weitergehen, und überprüfen, ob jemand 3 oder mehr gleiche Zeichen
hintereinander eingibt, z.B. "aaaa". Solche Zeichen können auch inmitten
von anderen Zeichen vorkommen, z.B. "aaafgsdf", dies möchte ich alles
rausfiltern.
Ich habe bis jetzt mein PHP-Buch gewälzt und keine RegExp gefunden, die
eine sich wiederholende Zeichenkette in einem String erkennt. Besteht
die Eingabe _nur_ aus der Zeichenkette, ist das kein Problem, wie sage
ich PHP aber, dass sich die gesuchten Zeichen inmitten eines Textes
verstecken?
Mal eine andere Frage: Könnte es damit Probleme geben, wenn ich so etwas
überprüfe, z.B. wenn jemand 3 gleiche, aufeinanderfolgende Zeichen in
seinem Namen hat (was ich nicht glaube)?
Ich möchte natürlich nicht potenzielle Kunden vergraulen, weil deren
Name nicht akzeptiert wird...
Und nochwas: Hat jemand ne Idee, wie ich das ganze noch sicherer machen
könnte, ohne dass es übertrieben wird?
Codeschnipsel sind immer gern gesehen ;-)))

Gruss,
Ithamar Garbe


+++++ Darauf hin habe ich geantwortet:


On Wednesday 11 July 2001 23:06, Ithamar Garbe wrote:
> Hallo zusammen,
>
> wieder einmal bereitet mir ein Skript Kopfzerbrechen:
>


[...]

> Das funktioniert auch sehr gut, allerdings möchte ich noch einen
> Schritt weitergehen, und überprüfen, ob jemand 3 oder mehr gleiche
> Zeichen hintereinander eingibt, z.B. "aaaa". Solche Zeichen können
> auch inmitten von anderen Zeichen vorkommen, z.B. "aaafgsdf", dies
> möchte ich alles rausfiltern.


mmh, mit dem sed sieht das so aus:

[gerd_(at)_devel:~]$ echo coooooololo | sed -e 's/\(.\)\1\{2,\}/\1\1/'
coololo

der ausdruck findet alle zeichen, die 2x oder oefter (kann man ja 
anpassen) nacheinander kommen und ersetzt sie durch 2 derselben.  man 
kann sie auch durch gar nix ersetzen lassen, wie man will.

zur erklaerung:

die klammer \(.\) definiert eine gruppe beliebiger zeichen, durch den 
identifier \1 wird sich auf diese (erste klammer) bezogen, \{2,\} 
wiederum sagt aus, dass sich das vorige konstrukt nur auf zeichen 
auswirken soll, die 2x oder oefters vorkommen.  diese werden dann im 
zweiten teil mittels \1\1 durch zwei der zeichen, die die klammer 
bestimmt, ersetzt.

soweit zur theorie.

wie das aber in php mit einer {e,p}reg(i)(_replace)-funktion aussieht 
wuesste ich auch gerne ;-)

vielleicht ist ja einer so fit in php-regex, dass er mein konstrukt 
oben umwandeln kann.

mfg,
gerd


++++ Und danach kam nichts mehr, ausser einer PM von Fred, der gerne 
die Ursprungsmail geschickt bekommen wollte.

Vielleicht faellt ja jetzt jemandem was dazu ein.

mfg,
Gerd

-- 
/"\
\ /     ASCII Ribbon Campaign
 x      Say NO to HTML in email and news !!
/ \


php::bar PHP Wiki   -   Listenarchive