class Users {
public $username = null;
public $password = null;
public $salt = "Zo4rU5Z1YyKJAASY0PT6EUg7BBYdlEhPaNLuxAwU8lqu1ElzHv0Ri7EM6irpx5w";
public function __construct($data = array()) {
if(isset($data['username'])) $this->username = stripslashes(strip_tags(>$data['username']));
if(isset($data['password'])) $this->password = stripslashes(strip_tags(>$data['password']));
}
}
public function storeFormValues($params) {
$this->__construct($params);
}
public function register() {
$correct = false;
try {
$con = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD);
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO users(username, password) VALUES(:username, :password)";
$stmt = $con->prepare($sql);
$stmt->bindValue("username", $this->username, PDO::PARAM_STR);
$stmt->bindValue("password", hash("sha256", $this->password . $this->salt), PDO::PARAM_STR);
$stmt->execute();
return "Registration Successful <br/> <a href='index.php'>Login Now</a>";
}catch(PDOException $e) {
return $e->getMessage();
}
}
}
Я хотел бы проверить, существует ли пользователь в моей базе данных, поскольку он позволяет мне создавать учетные записи с одинаковым именем пользователя в любое время. Спасибо.Как проверить, существует ли пользователь?
Итак, прежде чем вставлять, выберите из БД, где username = любое имя пользователя, которое они ввели в рег-форме (безопасность сначала очистит его и т. Д.). если имя пользователя существует (например, строки> 0), то скажите им, чтобы выбрать другой, иначе вставьте – James
. Установите уникальный ограничитель в столбце имени пользователя. Таким образом, проверка кода и условия гонки не были бы возможны. –
фиксированная соль не идеальна –