Hello. The code below does not allow the user to choose a name already used. But I would still like to warn the user that they chose the wrong name so that they know they need to choose another name.
include_once 'database.php';
// Verifica se o formulário foi submetido
if($_SERVER['REQUEST_METHOD'] == 'POST'){
/* Armazena os dados enviados pelo formulário em uma
* variável normal para não trabalhar com a variável global $_POST (não é seguro)
*/
$post = $_POST;
// Verifica se todos campos vieram pelo formulário e se estão preenchidos
if(isset($post['email']) && $post['email'] &&
isset($post['username']) && $post['username'] &&
isset($post['password']) && $post['password']){
// Prepara uma sentença para ser executada
$statement = $pdo->prepare('INSERT INTO tbl_users (email, username, password) VALUES (:email, :username, :password)');
// Filtra os dados e armazena em variáveis (o filtro padrão é FILTER_SANITIZE_STRING que remove tags HTML)
$email = filter_var($post['email']);
$username = filter_var($post['username']);
$password = filter_var($post['password']);
// Adiciona os dados acima para serem executados na sentença
$statement->bindParam(':email', $email);
$statement->bindParam(':username', $username);
$statement->bindParam(':password', $password);
// Executa a sentença já com os valores
if($statement->execute()){
// Definimos a mensagem de sucesso
$_SESSION['message'] = 'Usuário cadastrado com sucesso';
}else{
// Definimos a mensagem de erro
$_SESSION['message'] = 'Falha ao cadastrar usuário';
}
}else{
// Definimos a mensagem de erro
$_SESSION['message'] = 'Preencha todos os campos';
}
}
// Redirecionamos para a página inicial
header('Location: login.php');
?>