Программирование функции, чтобы узнать, является ли пользователь "активным" или нет.
function user_active($username) {
$username = sanitize($username);
$query = mysqli_query($_POST['x'], "SELECT * FROM users");
$row = mysqli_fetch_array($query);
if ($row['username'] === $username and $row['active'] === 1) {
return true;
} else {
return false;
}
}
а потом....
if (user_active($username) === false) {
$errors[] = 'You have not activated your account. Please check your
email to activate your account.';
Он работает только тогда, когда я тестирую $ username, но когда я включаю $ row ['active'] === 1, он перестает работать.
===
проверяет идентичное совпадение, что означает
$x === 1
проверит, является ли $x
целым числом со значением 1.
==
проверяет равенство только в значении, поэтому
$x == 1
будет проверять, имеет ли значение $x
значение 1, будь то строка или целое число или что-то еще, как логическое значение true
.
Попробуйте изменить свое выражение на
$row['active'] == 1
или, если вы знаете, что ваша переменная является строкой,
$row['active'] === '1'
Справка:
$ a == $ b.... Equal.... TRUE, если $ a равно $ b после манипуляции с типом.
$ a === $ b.... Идентично.... ИСТИНА, если $ a равно $ b, и они одного типа.
Попробуй это
Различие между == и === равно '===' проверяет равенство между левой и правой сторонами с типом данных при сравнении с использованием '===', если тип данных не равен, а затем возвращает false.
function user_active($username) {
$username = sanitize($username);
$query = mysqli_query($_POST['x'], "SELECT * FROM users");
$row = mysqli_fetch_array($query);
if ($row['username'] === $username and $row['active'] == 1) {
return true;
} else {
return false;
}
}
active
в таблице с 1 на 0, и это все еще позволило мне войти в системуvar_dump($row['active'])
. Какое значение и тип?