Egron91 Skrevet 18. september 2013 Del Skrevet 18. september 2013 Hei! Jeg skal sjekke om en variabel er en "ren integer", men dette blir resultatet: KODE: $dato = $_POST['dato']; echo $dato; var_dump (is_int($dato)); RESULTAT: 19102013 boolean false ************** Skifter jeg $dato til samme tallrekke: KODE: echo $dato; var_dump (is_int(19102013)); RESULTAT: 19102013 boolean true Litt bakgrunn: På min input har jeg valgt type='text', da jeg trenger av og til å ha en bestemt verdi, før brukeren har rørt feltet. Dette støtter visst nok ikke type='date'...enda, hvis ingen har noen gode ideer til meg. På textfeltet har jeg skrevet, placeholder='dd.mm.åååå', men "stol aldri på brukeren" er noe jeg har i bakhodet... så derfor vil jeg bruke "is_int" for å gi en tilbakemelding til brukeren om at han/hun har skrevet feil type dato. Beklager hvis det er tungvindt skrevet, men håper dere forstod litt av det. Takker så mye for alle svar! Lenke til kommentar
Thorbear Skrevet 18. september 2013 Del Skrevet 18. september 2013 For alle som programmerer noe i PHP så anbefaler jeg virkelig å benytte seg av http://php.net Dette er den offisielle dokumentasjonen av php, og den har en enkel søkefunksjon for å kunne slå opp hver eneste funksjon som finnes i PHP. Om du slår opp funksjonen is_int() vil du se at det står: "To test if a variable is a number or a numeric string (such as form input, which is always a string), you must use is_numeric()." :-) Lenke til kommentar
trondes Skrevet 18. september 2013 Del Skrevet 18. september 2013 Husk på at is_int sjekker om $variabel er en int. Dvs echo is_int( "123" ); vil gi deg FALSE mens echo is_int( 123 ) ; vil gi deg TRUE Prøv heler med is_numeric() eller sjekk varibelen som kommer tilbake er bare tall med regex. 1 Lenke til kommentar
Dan-Levi Skrevet 18. september 2013 Del Skrevet 18. september 2013 (endret) Bruk is_numeric() http://php.net/manual/en/function.is-int.php Endret 18. september 2013 av Dan-Levi Lenke til kommentar
trondes Skrevet 18. september 2013 Del Skrevet 18. september 2013 Hadde jeg skulle sjekket en dato som en bruker hadde skrevet inn tror jeg at jeg hadde gjort det noe slik som dette: if( isset( $_POST['date'] ) ) $date = str_replace(".", "", trim( $_POST['date'] ) ); else $date = ""; if( strlen( $date ) == 8 AND checkdate( substr( $date, 2, 2 ), substr( $date, 0, 2 ), substr( $date, -4 ) ) ) echo "Dette er en ekte dato"; else echo "FEIL dato"; HEr bytter den ut hvis brukeren har brukt "." mellom tallen, feks 20.10.2002. Den sjekker om den har fått alle 8 tallene, også sjekkes det om denne datoen finnes. Lenke til kommentar
Egron91 Skrevet 19. september 2013 Forfatter Del Skrevet 19. september 2013 Takk for gode svar! Det er jo selvfølgelig at en variabel leses alltid som en string, takk trondes, og for løsningsforslaget ditt! Og Thorbear, jeg leser alltid manualen, og var inne på is_int(), var slik jeg fant den funksjonen om å sjekke om det er korrekt input, men tydeligvis har jeg oversett det som kanskje står med størst skrift i manualen... Lenke til kommentar
Crowly Skrevet 19. september 2013 Del Skrevet 19. september 2013 Du kan også bruker filter_input() eller filter_var() if (filter_input(INPUT_POST,'dato',FILTER_VALIDATE_INT)!==false) echo 'Er gyldig int'; Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå