tutorials.de Buch-Aktion 02/2012
Like Tree1Danke
  • 1 Beitrag von Sven Mintel
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
383
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    2Pac 2Pac ist offline Mitglied Platin
    Registriert seit
    Jun 2002
    Ort
    Salzwedel
    Beiträge
    605
    Hallo,

    ich übergebe via url die id durch ?section=lalala&id=1

    Aber er sagt mir bei meiner Abfrage:

    PHP-Code:
    if (is_numeric($id) AND is_int($id))
    {
     do .....
    }
    else
    {
     echo 
    "Die eingegebene ID ist keine korrekte Zahl!"

    Er sagt mir wenn ich id=1 übergeben habe ($id enthält wirklich wirklich die 1 hab es schon probiert mit echo $id!) immer, es wäre keine korrekte Zahl. Jemand eine Idee warum? Hab ich einen Denkfehler? Irgendwas am Syntax falsch gemacht? Ich versteh es echt nicht...

    Hilfe
     

  2. #2
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Während is_numeric() den Inhalt prüft, ist is_int() eine reine Typprüfung!
    Und da PHP so locker im Umgang mit Typen ist, sind so ziemlich alle Daten aus der URI ein String... Und schlagen somit bei der Prüfung fehl.

    intval() sollte dir eher helfen.

    Alternativ:
    Die Ctype Funktionen.
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  3. #3
    2Pac 2Pac ist offline Mitglied Platin
    Registriert seit
    Jun 2002
    Ort
    Salzwedel
    Beiträge
    605
    Also da ich erreichen will dass $id eine Zahl sowie eine ganze Zahl ist hatte ich gedacht das wäre okay so?

    Die Funktion intval() gibt mir was genau jetzt zurück? Konvertiert Sie strings etc. in Integerzahlen?

    Reicht eine Überprüfung mit intval() aus, um mein Vorhaben zu realisieren, oder muss ich is_numeric() trotzdem überprüfen?

    Danke nochmal im Voraus und im Nachhinein für die Hilfe!
     

  4. #4
    brainsucker brainsucker ist offline Mitglied Brokat
    Registriert seit
    Jan 2007
    Beiträge
    258
    versuch mal:

    PHP-Code:
    if(ctype_digit($id))
    {
    echo 
    "alles ok, die ID ist ne Zahl";
    }
    else
    {
    echo 
    "Something went wrong. Das ist kein Integer!";

     

  5. #5
    Avatar von cr4shm4n
    cr4shm4n cr4shm4n ist offline Mitglied Silber
    Registriert seit
    Jul 2006
    Beiträge
    73
    Als erstes würde ich mit is_numeric überprüfen, ob der String eine Zahl ist, und dann mit intval() einen echten int draus machen.

    Erscheint mir wie die einfachste Methode.
     

  6. #6
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Also, meine grundsätzliche Überprüfung, falls ich MySQL IDs prüfen will (auto_increment, also != 0)

    PHP-Code:
    if(intval($number) > 0)
    {
      
    /* Aktion */

    Falls auch 0 zugelassen sein soll, ist es ein wenig komplexer, denn intval() gibt bei Fehlschlag 0 zurück. Dann solltest du auf eine intensivere Prüfung mit is_numeric() oder ctype_digit() zurückgreifen.
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  7. #7
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Moin,


    Code :
    1
    
    filter_input(INPUT_GET,'id',FILTER_VALIDATE_INT,FILTER_NULL_ON_FAILURE)

    ...liefert:
    1. false(boolean) , wenn die Variable nicht gesetzt ist
    2. NULL , wenn die Variable kein Integer ist
    3. andernfalls die Variable (kann auch 0 sein, also beim prüfen der Fälle 1+2 auch den Typ berücksichtigen)
    Flex bedankt sich. 

  8. #8
    2Pac 2Pac ist offline Mitglied Platin
    Registriert seit
    Jun 2002
    Ort
    Salzwedel
    Beiträge
    605
    Zitat Zitat von Felix Jacobi Beitrag anzeigen
    Also, meine grundsätzliche Überprüfung, falls ich MySQL IDs prüfen will (auto_increment, also != 0)

    PHP-Code:
    if(intval($number) > 0)
    {
      
    /* Aktion */

    Falls auch 0 zugelassen sein soll, ist es ein wenig komplexer, denn intval() gibt bei Fehlschlag 0 zurück. Dann solltest du auf eine intensivere Prüfung mit is_numeric() oder ctype_digit() zurückgreifen.
    Da genau das bei mir der Fall ist, werde ich deine Funktion nutzen. Vielen Dank für die Hilfe!
     

Ähnliche Themen

  1. Find den fehler nicht
    Von floMatic im Forum PHP
    Antworten: 7
    Letzter Beitrag: 31.10.08, 03:03
  2. Antworten: 7
    Letzter Beitrag: 06.06.05, 05:27
  3. arrg, ich find den Fehler nicht
    Von meilon im Forum PHP
    Antworten: 2
    Letzter Beitrag: 22.04.04, 13:40
  4. ich find den fehler nicht ;(
    Von apex im Forum PHP
    Antworten: 4
    Letzter Beitrag: 02.04.03, 20:50
  5. Antworten: 5
    Letzter Beitrag: 06.05.02, 11:54