PHP PDO Notify user whose registration name already exists

0

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');
?>
    
asked by anonymous 29.11.2016 / 22:15

2 answers

0
    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']){

        //verifica se o usuário realmente não existe
        $verifica = $pdo->prepare('SELECT * FROM tbl_users WHERE email = '.$post['email'].' AND username = '.$post['username'].'');
        $verifica->execute();

        //conta o numero de registros obtidos
        $rows = $verifica->rowCount();
        if($rows >= 1){
           $mensagem = "username";
        }else {
              // 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
                   $mensagem = "sucesso";
               }else{
                   // Definimos a mensagem de erro
                   $mensagem = "erro";
               } 
        }

    }else{
        // Definimos a mensagem de erro
        $mensagem = "erro";
    }
}

if($mensagem == "erro"){
      echo "<script>alert('Houve um erro ao processar seus dados, tente novamente'); location.href = 'sua-pagina.php';</script>";
}elseif($mensagem == "username"){
      echo "<script>alert('Já existe um usuário com esse Username / E-mail'); location.href = 'sua-pagina.php';</script>";
}else {
      // Redirecionamos para a página inicial
      header('Location: login.php'); 
}
    
29.11.2016 / 23:24
1

You can also use a floating window

elseif($mensagem == "username"){
    echo ("
    <script type=\"text/javascript\" src=\"jquery.colorbox.js\"></script>
    <link rel=\"stylesheet\" type=\"text/css\" href=\"colorbox.css\">
    <style>#ajax{height:40px; width:500px;}</style>
    <script type=\"text/javascript\">
     $(window).load(function(){
        $(document).ready(function(){
        $.colorbox({inline:true, href:\".ajax\"});
        });
        });
    </script>
    <div style=\"display:none\"><div id=\"ajax\" class=\"ajax\">Já existe um usuário com esse Username.</div></div>");
    
29.11.2016 / 23:55