kostenloser Webspace werbefrei: lima-city


Eingabe von Sonderzeichen unterbinden ?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    azadoras

    azadoras hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Da das zur Zeit der eingabe passieren sollte denk ich mal das du eher ein JavaScript benötigst,

  4. 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
  5. Autor dieses Themas

    azadoras

    azadoras hat kostenlosen Webspace.

    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 ?

  6. 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
  7. Autor dieses Themas

    azadoras

    azadoras hat kostenlosen Webspace.

    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 ? :>
  8. computerfreak12

    computerfreak12 hat kostenlosen Webspace.

    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

  9. 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
  10. Autor dieses Themas

    azadoras

    azadoras hat kostenlosen Webspace.

    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*
  11. Autor dieses Themas

    azadoras

    azadoras hat kostenlosen Webspace.

    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 ? ;)
  12. computerfreak12

    computerfreak12 hat kostenlosen Webspace.

    Bitteschön!;)

    gruss computerfreak12
  13. @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
  14. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!