Eingabe von Sonderzeichen unterbinden ?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
account
alphabet
anmeldung
anweisung
buchstabe
computerfreak
eingabe
emulator
expression
funktion
gruss
keinerlei sonderzeichen
klappe
mglichkeit
oberflche
pack
regular
sonderzeichen
ultima
unterteil
-
Moin,
ich habe mal wieder eine Frage.
Ich möchte ein Textfeld basteln, in welches man NUR Buchstaben und Zahlen eintragen kann. Also keinerlei Sonderzeichen.
Nur leider habe ich keine Ahnung wie man so etwas überprüfen kann. Gibt es dafür auch bereits eine vorgefertigte Funktion in PHP ?
Greetz,
Aza -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Da das zur Zeit der eingabe passieren sollte denk ich mal das du eher ein JavaScript benötigst,
-
Nur leider habe ich keine Ahnung wie man so etwas überprüfen kann. Gibt es dafür auch bereits eine vorgefertigte Funktion in PHP ?
Nein, gibt es nicht.
Du könntest mittels Regular Expressions überprüfen, ob Sonderzeichen im String vorhanden sind (= ob nur Zahlen und Buchstaben vorhanden sind).
Das kannst du zwar auch ohne RegEx tun, aber das ist recht rechenintensiv: Alle erlaubten Zeichen in ein Array setzen und dann den übergebenen String Zeichen für Zeichen prüfen, ob es erlaubt ist oder nicht (siehe in_array() ).
Wenn du ein Feld hast, in das nur Zahlen dürfen, kannst du das mit is_numeric() überprüfen.
Aber mal anders: Wozu brauchst du ein Feld, in das der User keine Sonderzeichen eintragen darf?
gruß
ferdinand24 -
Ich baue momentan eine Web-Oberfläche, mit der man Accounts für einen UltimaOnline-Freeshard anmelden und später dann von der Admin-Seite her verwalten kann.
Der Server-Emulator für Ultima Online lässt als Accountnamen nur Namen zu, in denen keine Sonderzeichen vorhanden sind. Daher dürfen bei der Anmeldung im Accountnamen keinerlei Sonderzeichen sein, sondern nur Buchstaben und Zahlen.
Würde das so klappen:
<?php If(RegEx($accountname)) { blablabla } ?>
Hieße das dann, dass die Anweisung "blablabla" nur ausgeführt wird, wenn KEINE Sonderzeichen da sind ? -
Ich baue momentan eine Web-Oberfläche, mit der man Accounts für einen UltimaOnline-Freeshard anmelden und später dann von der Admin-Seite her verwalten kann.
Der Server-Emulator für Ultima Online lässt als Accountnamen nur Namen zu, in denen keine Sonderzeichen vorhanden sind. Daher dürfen bei der Anmeldung im Accountnamen keinerlei Sonderzeichen sein, sondern nur Buchstaben und Zahlen.
Würde das so klappen:
<?php If(RegEx($accountname)) { blablabla } ?>
Hieße das dann, dass die Anweisung "blablabla" nur ausgeführt wird, wenn KEINE Sonderzeichen da sind ?
Nein, ganz so einfach ist das nun auch wieder nicht.
RegEx ist keine PHP-Funktion. RegEx steht für Regular Expressions (= Reguläre Ausdrücke) und bezeichnet ein weiträumiges Gebiet in Programmiersprachen zur Veranstaltung von Suchen.
Du brauchst also ein Suchmuster und eine Funktion. Ich bastle dir da mal was, Moment...
Eine weitere Möglichkeit wäre per strpos()... Da du aber eher sagst "der String darf nur abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 bestehen" ist das nicht die richtige Möglichkeit.
gruß
ferdinand24
Beitrag geändert: 24.7.2007 15:51:21 von ferdinand24 -
Hrm, okay, danke nochmals. Also bleibt mir nicht viel übrig, außer das Alphabet in groß und klein, und die Zahlen 1-9 in ein Array zu packen, und dann zu überprüfen, ob jedes einzelne Zeichen der Eingabe ( is ja nich so wild, is ja schließlich nur ein Account-Name ^^ ) in dem Array ist ?
Wie unterteile ich denn einen String ( z.B. den Accountnamen Azadoras ) in die einzelnen Zeichen ? :> -
Hi,
ich würde das so machen:
<?php $text="geposteter benutzername"; //Wenn Sonderzeichen vorkommen if(!ereg("^[0-9a-zA-Z]*$",$text) { echo "Der Benutzername darf keine Sonderzeichen enthalten!"; } else { echo "Korrekter Benutzername!"; } ?>
gruss computerfreak12 -
Hrm, okay, danke nochmals. Also bleibt mir nicht viel übrig, außer das Alphabet in groß und klein, und die Zahlen 1-9 in ein Array zu packen, und dann zu überprüfen, ob jedes einzelne Zeichen der Eingabe ( is ja nich so wild, is ja schließlich nur ein Account-Name ^^ ) in dem Array ist ?
Wie unterteile ich denn einen String ( z.B. den Accountnamen Azadoras ) in die einzelnen Zeichen ? :>
Entweder mit substr() oder, sofern du PHP 5 hast, mit str_split() (ist schneller):
Mit substr() würde das so gehen (nicht getestet):
<?php $allowed = array("a", "b", "c"); //usw. $input = "Azadoras"; $length = strlen($input); $failed = 0; for($i = 0; $i < $length; $i++){ $char = substr($input, $i, 1); if(!in_array($char, $allowed)){ $falied = 1; } } ?>
Aber mach das mal lieber per RegEx, computerfreak12 hat da ja eine Möglichkeit geboten; meine hätte ähnlich ausgesehen...
gruß
ferdinand24 -
Ah, super, danke euch, ich werd morgen früh erstmal das von Computerfreak testen, das sieht schön kurz und einfach aus. Hab jez leider keine Zeit mehr, gleich gehts ab Richtung Kino Stirb Langsam 4.0 gucken *muharhar*
Morgen gibts dann meinen Bericht, oder weitere doofe Fragen *gg* -
So, habe es nun getestet. Der Code von Computerfreak funktioniert astrein. Ich danke dir, aber natürlich auch den anderen, für die Hilfe!
Was wär ich nur ohne euch ? ;) -
@azadonas: evtl. mal auf eine leere Eingabe testen... kommt nämlich drauf an wierum man die if-Abfrage macht
Falls du wie bei computerfreak auf negativ testest ist das ok so.
Solltest du hingegend auf ein positives Ergebnis testen, solltest du ein plus anstatt ein * nehmen im RegEx. Dadurch schließt du auch Leerstrings aus
Bei positiv-Lösung:
<?php if ( ereg("^[0-9a-zA-Z]+$", $text) ) { echo "Ausdruck ist ok"; } else { echo "Bitte nur Buchstaben und Zahlen"; } ?>
Bei negativ-Lösung:
<?php if ( !ereg("^[0-9a-zA-Z]*$", $text) ) { echo "Bitte keine Sonderzeichen benutzen..."; } else { echo "Ausdruck ok"; } ?>
Grüßle
Beitrag geändert: 25.7.2007 16:57:29 von scout -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage