Witam, tworzę system banowania do gry. Zrobiłem sobie logowanie i rejestracje. Chcę stworzyć prosty system banowania. Zrobiłem sobie w bazie danych tabelę banned. Każdy użytkownik po rejestracji w kolumnie banned otrzymuje wartość 0. Założyłem sobie, że gdy będę chciał zablokować użytkownika to w tejże kolumnie dam wartość 1 i w takim przypadku wyświetli się komunikat podczas logowania, że twoje konto jest zablokowane. Zrobiłem najpier coś takiego:
$check = "SELECT * FROM accounts WHERE banned = 1";
$result = $conn->query($check);
if ($result->num_rows > 0) {
$result = array('status' => 1, 'msg' => "Your account is banned!");
echo json_encode($result);
die;
}
Tylko dopiero dziś zobaczyłem że to nie ma sensu, bo jeśli pojawi się przy jednym użytkowniku 1 to wszyscy użytkownicy są zablokowani. Jak napisać zapytanie sql aby tyczyło się to tylko i wyłącznie jednego użytkownika?
Zrobiłem jeszcze coś takiego:
$check = "SELECT id,login,banned FROM accounts WHERE login LIKE '" . $login . "'";
$result = $conn->query($check);
if($result['banned'] != 0)
{
$result = array('msg' => "Your account is banned!");
echo json_encode($result);
die;
}
Ale dostaję komunikat: " Cannot use object of type mysqli_result as array". Napisane jest to na PHP 5.2 i pewnie dlatego. Pomoże mi ktoś? Mam jeszcze drugie pytanie. Chciałbym aby w loginie dało się pisać tylko znaki [A-Za-z0-9]. Jak mogę wykonać to w PHP? Zrobiłem coś takiego: (wykonałem to na podstawie sprawdzenia adresu email w którym to jednak działa)
function check_login($login) {
if (preg_match('[a-zA-Z0-9]', $login)) {
return true;
} else {
return false;
}
}
if (!check_login($login)) {
$result = array('msg' => "Invalid login!");
echo json_encode($result);
die;
}
Ale to nie działa, bo cały czas dostaję komunikat Invalid login! To samo tyczy się hasła. Chciałbym aby wymagał PHP, aby użytkownik wpisał min. 1 dużą literę i jakiś znak np. @#$%^&. Z góry dziękuję za pomoc.