Anzeige:
Ergebnis 1 bis 12 von 12

Thema: Überprüfung ob Eingabe eine Zahl ist

  1. #1
    Registrierter Benutzer
    Registriert seit
    05.04.2002
    Beiträge
    73

    Überprüfung ob Eingabe eine Zahl ist

    Ich muss bei mehreren Skripten überprüfen, ob die Usereingabe eine Zahl ist, da es sonst Fehler gibt

    Ich habs versucht mit gettype() und is_int() aber beide stempeln den Wert der per Formular gesendet wird als String ab obwohl er wirklich nur ne Zahl is, hat da jemand ne Lösung ??
    Suse 7.2 und Ärger mit einem störrischen 400 Mhz der nur noch dazu da ist mich zu beschäftigen Gott sei dank habe ich auf meinem anderen 1600 LInux das funktioniert **GGG***
    Gurt fest aber selber locker bleiben.

    Es gibt auf alles ne Antwort, ihr müsst nur fragen ansonsten alles auf www.webmasteronly.de

  2. #2
    Registrierter Benutzer Avatar von phate
    Registriert seit
    14.02.2003
    Beiträge
    149
    Hi Duke,

    überprüf die Eingabe mit einer regular-expression.
    Code:
    if (preg_match("^[0-9]+$", $var_mit_eingabe))
    {
        //auszuführender Code wenn Eingabe ne Zahl ist
    }
    else
    {
        //Fehlerbehandlung wenn Eingabe keine Zahl ist (dies beinhaltet leere Variable)
    }
    gruss,

    phate

  3. #3
    Registrierter Benutzer
    Registriert seit
    05.04.2002
    Beiträge
    73
    Also so läuft das bis jetzt aber noch nit der mag den ^ nicht und das +$ auch nicht und ohne die beiden funktioniert es nicht
    ...

    PHP-Code:
    <?
    if (preg_match("^[0-9]+$", $var))
    {
     echo "IS";   //auszuführender Code wenn Eingabe ne Zahl ist
    }
    else
    {
     echo "NEIN";   //Fehlerbehandlung wenn Eingabe keine Zahl ist (dies beinhaltet leere Variable)
    }
     
    ?>
    Suse 7.2 und Ärger mit einem störrischen 400 Mhz der nur noch dazu da ist mich zu beschäftigen Gott sei dank habe ich auf meinem anderen 1600 LInux das funktioniert **GGG***
    Gurt fest aber selber locker bleiben.

    Es gibt auf alles ne Antwort, ihr müsst nur fragen ansonsten alles auf www.webmasteronly.de

  4. #4
    Registrierter Benutzer Avatar von phate
    Registriert seit
    14.02.2003
    Beiträge
    149
    Hi Duke,

    bei mir funktioniert o.g. einwandfrei. Meine wahrlich nicht neuste PHP-Version ist 4..1.2 und insofern dir Dein PHP die Verwendung von preg_match nicht anmeckert, dann muss es bei Dir auch funktionieren, denn die Syntax von pcre (perl comatible regular expressions) ist fest definiert.

    Nun noch kurz zu Deinem Verständnis ein paar erhellende Worte zu verwendeter regex.

    preg_match prüft eine Variable gegen ein Prüfmuster bestehend aus Zeichen, Zeichenklassen und Metazeichen, eine sog. regular expression. Die in konkretem Fall verwendete Regex ist von links nach rechts zu lesen und setzt sich folgendermassen zusammen:

    ^ Markiert den Beginn der zu prüfenden Variable
    [0-9] Beschreibt eine Zeichenklasse mit den Zahlen 0-9
    + Wirkt als Quantifier für die vorangehende Zeichenklasse und legt fest, dass diese ein- oder mehrmal vorkommen muss
    $ Markiert das Ende der zu prüfenden Variable

    Stell Dir das ganze wörtlich vor und lies es von links nach rechts. Die Variable beginnt, es folgt eine Zahl (bestehend aus mind. einer aber beliebig vielen Ziffern) und die Variable endet.

    Lässt Du nun ^ und $ (die sog. Anker) fort, so würde der Ausdruck auch auf Variablen wie z.B. "abc123def" passen, da der Ausdruck nun an beliebiger Stelle in zu überprüfender Variable stehen kann. Entfernst Du nun noch das + bedeutet das, dass der Ausdruck auf eine Ziffer an beliebiger Stelle in zu überprüfender Variable passt und dass ist wahrlich nicht das, was Du erreichen willst.

    Wenn Du das ganze etwas ausführlicher nachlesen willst, schau Dir mal http://www.tekromancer.com/perl/7.html an.

    gruss,

    phate

  5. #5
    Registrierter Benutzer
    Registriert seit
    05.04.2002
    Beiträge
    73
    Also eigenltich sollte das zeug bei mir auch von nem php4 mod gemacht werden ich muss mal schauen welches modul ich genau habe

    PHP-Code:
            #
        # AddType allows you to tweak mime.types without actually editing it, or to
        # make certain files to be certain types.
        #
        # For example, the PHP 3.x module (not part of the Apache distribution - see
        # [url]http://www.php.net[/url]) will typically use:
        #
    #    <IfModule mod_php3.c>
     #   AddType application/x-httpd-php .php .php3 .php4
      #  AddType application/x-httpd-php3-source .phps
       # AddType application/x-httpd-php3 .phtml
        #</IfModule>
        #
        # And for PHP 4.x, use:
        #
        
    <IfModule mod_php4.c>
        
    AddType application/x-httpd-php .php
        AddType application
    /x-httpd-php .php4 .php3
        AddType application
    /x-httpd-php-source .phps
        
    </IfModule
    Suse 7.2 und Ärger mit einem störrischen 400 Mhz der nur noch dazu da ist mich zu beschäftigen Gott sei dank habe ich auf meinem anderen 1600 LInux das funktioniert **GGG***
    Gurt fest aber selber locker bleiben.

    Es gibt auf alles ne Antwort, ihr müsst nur fragen ansonsten alles auf www.webmasteronly.de

  6. #6
    Registrierter Benutzer
    Registriert seit
    05.04.2002
    Beiträge
    73
    Sieht aus als hätte ich 4.0.4 drauf und eigenltich habe ich auch kein Bock das jetzt upzudaten
    Suse 7.2 und Ärger mit einem störrischen 400 Mhz der nur noch dazu da ist mich zu beschäftigen Gott sei dank habe ich auf meinem anderen 1600 LInux das funktioniert **GGG***
    Gurt fest aber selber locker bleiben.

    Es gibt auf alles ne Antwort, ihr müsst nur fragen ansonsten alles auf www.webmasteronly.de

  7. #7
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Solltest du tun... egal ob du bock hast oder nicht... mit 4.04 lässt sich nicht mehr vernünftig entwickeln (von den Sicherheitslücken ganz zu schweigen).


  8. #8
    Registrierter Benutzer
    Registriert seit
    05.04.2002
    Beiträge
    73
    Kann ich das alte modul mit nem neuen ohne probleme überschreiben sprich einfach nen neues rpm installieren ??
    Suse 7.2 und Ärger mit einem störrischen 400 Mhz der nur noch dazu da ist mich zu beschäftigen Gott sei dank habe ich auf meinem anderen 1600 LInux das funktioniert **GGG***
    Gurt fest aber selber locker bleiben.

    Es gibt auf alles ne Antwort, ihr müsst nur fragen ansonsten alles auf www.webmasteronly.de

  9. #9
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Wenn die alte Version ne rpm war, dann sollte das IMHO funktionieren.


  10. #10
    Registrierter Benutzer
    Registriert seit
    05.04.2002
    Beiträge
    73
    Sorry IMHO ??
    Suse 7.2 und Ärger mit einem störrischen 400 Mhz der nur noch dazu da ist mich zu beschäftigen Gott sei dank habe ich auf meinem anderen 1600 LInux das funktioniert **GGG***
    Gurt fest aber selber locker bleiben.

    Es gibt auf alles ne Antwort, ihr müsst nur fragen ansonsten alles auf www.webmasteronly.de

  11. #11
    Registrierter Benutzer Avatar von phate
    Registriert seit
    14.02.2003
    Beiträge
    149
    Hi Duke,

    IMHO ^= In My Humble Opinion, also seiner bescheidenen Meinung nach. Seh ich übrigens auch so.

    rpm -Uvh packname.rpm

    War Deine jetzige Version per rpm installiert, dann wird Dir dieser Befehl in Verbindung mit dem entsprechenden neueren Paket, das ganze updaten.

    gruss,

    phate

  12. #12
    Registrierter Benutzer
    Registriert seit
    05.04.2002
    Beiträge
    73
    So gehts übrigens

    PHP-Code:
    if (!preg_match('/^[0-9]*$/'$variable))  { $fehler.="Die Variable darf nur aus Zahlen bestehen.";} 
    Suse 7.2 und Ärger mit einem störrischen 400 Mhz der nur noch dazu da ist mich zu beschäftigen Gott sei dank habe ich auf meinem anderen 1600 LInux das funktioniert **GGG***
    Gurt fest aber selber locker bleiben.

    Es gibt auf alles ne Antwort, ihr müsst nur fragen ansonsten alles auf www.webmasteronly.de

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •