FILTER_SANITIZE_NUMBER_INT
допускает .
, +
и -
, которые вы, вероятно, не хотите включать.Использование FILTER_VALIDATE_INT
было бы хорошо для регулярных целочисленных проверок, хотя имейте в виду, что это вернет false
для 0
.Если вы хотите, чтобы ваши идентификаторы также включали 0
, то вам необходимо явно проверить это:
$Id = filter_var($rawId, FILTER_VALIDATE_INT) === 0 || filter_var($rawId, FILTER_VALIDATE_INT));
Предполагая, что вы хотите, чтобы $rawStatus
была литеральной строкой true
/ false
, тогда то, как вы сейчас это рассматриваете, является, вероятно, наиболее оптимальным подходом, хотя, похоже, вы пытаетесь здесь выполнить булеву проверку.В этом случае вы можете просто проверить наличие из $rawStatus
, используя его отсутствие для обозначения ложного значения:
if ($rawStatus)
И, как вы упоминаете в своем комментарии, вы действительно захотите проверить, что оба установлены с isset()
... но вы также захотите проверить, что значения не пусты.Это можно сделать с помощью !empty()
.
Я бы также рекомендовал переходить только в известное действительное состояние, а не вызывать die()
в известном недопустимом состоянии.
Соединение всего этого вместеу вас будет что-то похожее на следующее:
$rawId = null;
if (isset($_GET["id"]) && !empty($_GET["id"])) {
$rawId = $_GET["id"];
}
if (isset($_GET["status"]) && !empty($_GET["status"])) {
$rawStatus = $_GET["status"];
}
$Id = filter_var($rawId, FILTER_VALIDATE_INT) === 0 || filter_var($rawId, FILTER_VALIDATE_INT);
if ($Id && $rawStatus) {
// Logic
}