Задать вопрос
@rus_07_tam
Зовут, Рустам

Как узнать наличие IP в листе?

Конфиг:

include "../incl/lib/connection.php";
require_once "../incl/lib/exploitPatch.php";
$ep = new exploitPatch();
if($_POST["userName"] != ""){
	//here im getting all the data
	$userName = $ep->remove($_POST["userName"]);
	$password = $ep->remove($_POST["password"]);
	$email = $ep->remove($_POST["email"]);
	$secret = "";
	//checking if name is taken
	$query2 = $db->prepare("SELECT count(*) FROM accounts WHERE userName LIKE :userName");
	$query2->execute([':userName' => $userName]);
	$regusrs = $query2->fetchColumn();
	if ($regusrs > 0) {
		echo "-2";
	}else{
		$hashpass = password_hash($password, PASSWORD_DEFAULT);
		$query = $db->prepare("INSERT INTO accounts (userName, password, email, secret, saveData, registerDate, saveKey)
		VALUES (:userName, :password, :email, :secret, '', :time, '')");
		$query->execute([':userName' => $userName, ':password' => $hashpass, ':email' => $email, ':secret' => $secret, ':time' => time()]);
		echo "1";
	}
}


Это форма создания аккаунта.

Если IP пользователя есть в таблице, то выдать ошибку/отмену.
  • Вопрос задан
  • 99 просмотров
Подписаться 1 Средний 1 комментарий
Решения вопроса 1
@rPman
$query2 = $db->prepare("SELECT count(*) FROM accounts WHERE userName LIKE :userName");
...
 if ($regusrs > 0) {
    echo "-2";
этот кусок кода проверяет, есть ли пользователь с таким именем, и если есть, выдает 'ошибку' -2 (кстати почему бы и не 42?), т.е. добавь в sql запрос проверку на ip (храни их тоже в базе) и проверяй по нему.

Приведенный код отвратителен. Почему методы exploitPatch для проверки данных пользователя называются remove? я правильно понимаю ты удаляешь из емейла, логина и пароля пользователя опасные символы, и с полученными строками их регистрируешь? А потом, когда ты поменяешь эту логику, пользователи с паролями с " начнут обламываться

Обычно методы проверки называют validate и они должны проверять валидность и возвращать boolean разрешено/запрещено
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы