I have a page like so:
http://sitename/gallery.php?page=2
It has pagination links at the bottom by which we can browse. Everytime the page numbers are clicked, it would send a GET request with parameters page=1 or page=2 and so on ...
When I store these values to $page
from teh $_GET
variable, it is a string value. I can convert it to an integer using (int)
like this:
if(!empty($_GET['page'])){
$page = (int)$_GET['page'];
echo "Page Number: ".$page;
}
But how can I make sure that the value passed is an integer only and not other crap?
Using filters:
This also checks whether the variable appears in the query string at the same time. If you want to differentiate between missing and invalid you have to leave off the last argument to
filter_input()
:this is a way how to check parameter if it is intetger or not.
is_numeric is probably what you need.
@see https://stackoverflow.com/a/41868665/6758130
You can also check with
it returns a boolean value(true,flase)....if its true then it is not an integer,if false its an integer.
Using
is_int
won't help, probably. All incoming parameters (including $_GET and $_POST) are parsed as strings by PHP. Theis_int
function checks the datatype, not the value.ctype_digit
checks for only digits though: