$query2 = $db->prepare("SELECT count(*) FROM accounts WHERE userName LIKE :userName");
...
if ($regusrs > 0) {
echo "-2";
этот кусок кода проверяет, есть ли пользователь с таким именем, и если есть, выдает 'ошибку' -2 (кстати почему бы и не 42?), т.е. добавь в sql запрос проверку на ip (храни их тоже в базе) и проверяй по нему.
Приведенный код отвратителен. Почему методы exploitPatch для проверки данных пользователя называются remove? я правильно понимаю ты удаляешь из емейла, логина и пароля пользователя опасные символы, и с полученными строками их регистрируешь? А потом, когда ты поменяешь эту логику, пользователи с паролями с " начнут обламываться
Обычно методы проверки называют validate и они должны проверять валидность и возвращать boolean разрешено/запрещено