Ralph: Typ einer Variablen validieren

Hallo,

ich uebergebe einige Variablen per URI (also als Typ string), und will sie auf Gueltigkeit ueberpruefen:

so wäre z.B.
   index.php?id=1124
gültig, aber
   index.php?id=112a
ungueltig.

Wie bekomme ich also zuverlaessig raus, ob die Variable eine Ganzzahl repräsentiert?
Mit Stringkonvertierung erhalte ich bei "112a" als Ergebnis 0, was eine gueltige Zahl waere. Mmmh, ...???

Danke fuer Hilfe,
Ralph

  1. Hallo,

    also willst du überprüfen ob die Variable nur ahlen enthält ???

    samy,

    1. also willst du überprüfen ob die Variable nur ahlen enthält ???

      Ganz genau!

    2. Hello Sammy,

      also willst du überprüfen ob die Variable nur ahlen enthält ???

      Ich glaube, er wollte überprüfen, ob der Paramter nur Ziffern enthält und genau EINE gültige Zahl ergibt.

      Grüße

      Tom

  2. Hallo,

    Wie bekomme ich also zuverlaessig raus, ob die Variable eine Ganzzahl repräsentiert?

    is_int()

    Allgemein:
    gettype()
    bzw.
    is_<VARIABLENTYP>()

    Lies:
    http://www.php.net/manual/de/language.types.php
    http://www.php.net/manual/de/function.gettype.php
    http://www.php.net/manual/en/function.is-int.php

    Gruesse,

    Thomas

    1. Hello,

      Wie bekomme ich also zuverlaessig raus, ob die Variable eine Ganzzahl repräsentiert?

      Das ist gar nicht so ganz einfach bei PHP. Übergeben werden die Parameter alle als Strings. Aber PHP führt eine automatische Typanpassung durch.

      Du kannst also zur Kontrolle nur die Funktionen verwenden, die PHP für die logische Überprüfung bereitstellt, nicht die für die deklaratorische Prüfung.

      is_int()
      gettype()

      Diese beiden sind deklaratorisch, also die falsche Wahl.

      is_numeric() gehört zu den logischen Überprüfungen. Musst einfach mal alle Funktonen drum herum anschauen, was genau geprüft wird...

      Und wichtig: Mach ein paar eigene Versuche. Versuch nicht (nur), ob es klappt, sondern versuch immer, das System doch noch auszutrixen. Denn genau das machen ja Deine Besucher.

      Grüße

      Tom

  3. Danke Euch allen,
    habe die Lösung jetzt unter http://www.php.net/manual/en/function.is-numeric.php gefunden.

    if (eregi("[^0-9]", $id)
    {
       echo "ungueltige Zeichen gefunden";
    }

    ist genau das, was ich gesucht habe.
    Gruss,
    Ralph