Путь URI page?siteID=1
является строкой; Значение $_GET['siteID']
изначально будет строкой.
Предположение: значение siteID
используется для просмотра в таблице дБ по полю siteID
, поэтому действительное значение siteID
должно выглядеть как целое число больше нуля.
is_numeric()
недостаточно в этом случае, к сожалению, потому что is_numeric('7e2')
возвращает true.
Вы хотите проверить строковое значение siteID
как целое число без преобразования значения из $ _GET, сохраняя ваш $ _GET с необработанными значениями, потому что они могут понадобиться вам позже.
function is_valid_id($id) {
return strval($id) === strval(intval($id)) && $id > 0;
}
if (is_valid_id($_GET['siteID']))
$siteID = intval($_GET['siteID']);
# Value is ready to be processed as integer
else
# Refresh page with invalid id error message
Он отображает недопустимые значения «0», «0,0», «-0», «07», «-09», «0y», «7e2», «-w», «-b.9», «G98». ',' -h7 ',' 98R ', '98 .7', '98, 8 ',' 0x1A ',' \ x1A ',' 5 + 5 ',' 5 * 5 'и т. д.