Jump to content

michelmir

Members
  • Content count

    21
  • Joined

  • Last visited

Community Reputation

0 Comum

About michelmir

Recent Profile Visitors

445 profile views
  1. Olá! Tenho um formulário que dentro dele contem uma dropdownlist que utiliza o Bootstrap-Select (selectpicker) e quando clicado o mesmo carrega uma lista de opções provenientes do mysql. Ocorre que esta lista envia as opções marcadas para o mysql corretamente porém eu gostaria que a mesma, no que diz respeito a atualização de dados, carregasse as opções marcadas anteriormente ao ser clicada. Abaixo segue um método do selectpecker que inseri valores de um objeto em JSON e mostra as opções marcadas referente a esses valores: $('.selectpicker').selectpicker('val', [puxar valores de um objeto JSON aqui]); Baseando-se no método acima como faço para inserir valores de um objeto em JSON proveniente de um script php que envia o resultado em formato JSON para o ajax? Abaixo segue um trecho do Ajax que recebe os dados do script php e os mostra em um formulário com campos input e selectpicker. $(document).on('click', '.update', function(){ $.ajax({ url:"fetch_single.php", method:"POST", data:{user_id:user_id}, dataType:"json", success:function(data) { $('#camisas').val(data.camisas); $('.selectpicker').selectpicker('val', [valores de um objeto em JSON aqui]); $('.selectpicker').selectpicker('refresh'); } }) }); E abaixo o resultado em JSON que o AJAX recebe: {"camisa":"15","cores":"5,18,27"} No caso gostaria de que o selectpicker puxasse os valores do objeto "cores" como uma forma de marcar essas opções dentro da lista. É possível? Desde já agradeço a atenção.
  2. Show de bola Motta. Obrigado pela orientação. Vou estudar mais a fundo essas dicas. Valeu!
  3. Olá pessoal! Não sei se aqui seria o melhor lugar pra postar, mas vamos lá. Futuramente pretendo lançar um projeto que estou trabalhando a muito tempo e muito provavelmente, se eu tiver sorte, este projeto poderá crescer em número de clientes e usuários. Por conta de eu estar desenvolvendo este projeto sozinho, não tenho a mínima ideia, caso o mesmo venha a ter sucesso, de como, sozinho, trabalhar neste projeto caso a demanda por ele cresça exponencialmente. Baseando-se nisso, pensaria em abrir um escritório onde alocaria uma equipe para cuidar da parte de manutenção e adaptação do projeto contratando programadores para tal. Ocorre que a primeira coisa que penso é pela segurança dos dados e ideias deste projeto. Sei que seria inevitável a cópia de um projeto destes visto que acredito que para ter sucesso é necessário muitas horas de dedicação e qualidade na prestação do serviço bem como gostar muito do que faz e isso não tem preço que pague. Entretanto, para alguém que tem experiência e que trabalha com equipes de programadores, quais as dicas para formar uma equipe que possa trabalhar em um projeto onde eu poderia estar ao menos 30% seguro que os arquivos e ideias desse projeto não sofreriam uma espécie de "sequestro de dados" por terceiros? Existe alguma plataforma onde equipes possam trabalhar de uma forma onde as mesmas tenham suas respectivas limitações de trabalho no que diz respeito a programação? Desculpem a forma como descrevi aqui, porém é pelo motivo de eu não ter experiência nesta área. Desde já agradeço a atenção. Obrigado pessoal!
  4. michelmir

    Sistema de login com PHP

    Como forma de aprimoramento e segurança é importante que o seu código se previna de SQL injection que é um tipo de ameaça de segurança que interage com dados através de comandos SQL, onde o atacante consegue inserir uma instrução SQL personalizada e indevida dentro de uma consulta query (SELECT/UPDATE) através de formulários ou URL de uma aplicação por exemplo. No caso, para o PHP, você pode montar o seu script baseando-se em prepared statements que no caso, segundo manual do PHP, consiste em dois estágios: preparar e executar. No estágio de preparação, um modelo de instrução é enviado ao servidor de banco de dados. O servidor executa uma verificação de sintaxe e inicializa os recursos internos do servidor para uso posterior. Isso é uma forma segura de evitar o SQL Injection. Abaixo segue um exemplo de um script que tem a função de realizar um login depois que o usuário inseri os dados de acesso: $message = ''; if(isset($_POST["login"])) { $query = " SELECT * FROM register_user WHERE user_email = :user_email "; $statement = $connect->prepare($query); $statement->execute( array( 'user_email' => $_POST["user_email"] ) ); $count = $statement->rowCount(); if($count > 0) { $result = $statement->fetchAll(); foreach($result as $row) { if($row['user_email_status'] == 'verified') { if(password_verify($_POST["user_password"], $row["user_password"])) //if($row["user_password"] == $_POST["user_password"]) { $_SESSION['user_id'] = $row['register_user_id']; $_SESSION['userName'] = $row['user_name']; header("location: minha-conta.php"); } else { $message = "<label>Senha incorreta</label>"; } } else { $message = "<label class="text-danger">Ative a sua conta clicando no link de ativação enviado para o e-mail de cadastro</label>"; } } } else { $message = "<label class="text-danger">E-mail de cadastro incorreto</label>"; } } Observe que a variável $query é preparada e depois executada no formato abaixo: $statement = $connect->prepare($query); $statement->execute( array( 'user_email' => $_POST["user_email"] ) ); Outro ponto importante para um sistema de login é a validação do e-mail cadastrado. Dessa forma a autenticação de um e-mail válido seria mais eficiente pois é uma das maneiras de autenticar e validar o cadastro com um e-mail válido. Além dessas formas aqui citadas, é importante também criar mecanismos de validação de campos para verificar se as informações inseridas dentro de um campo por um usuário por exemplo, estão corretas antes de serem enviadas para o banco de dados. Um exemplo poderia ser o campo CPF/CNPJ. Se nesses campos não houver um código jquery por exemplo, validando um número cpf o ucnpj, o banco de dados poderá receber qualquer sequência de números "sujando", digamos assim, o seu banco de dados com dados incorretos. Por fim, criei um exemplo de um sistema simples de login, validação de e-mail usando a biblioteca PHPmailer e ativação de conta onde você pode baixar e fazer testes com ele. No mais, sucesso aí.
  5. Que bom que funcionou. Sucesso aí
  6. Quais são as colunas após a coluna "premium_points? Quanto a $_session[' '], dentro da mesma deverá conter algum nome que deve estar relacionado a algum valor dentro da tabela accounts. Normalmente é uma foreingKey. Outro ponto é verificar se o usuário logado contém pontos. Observei que na primeira imagem que você enviou, alguns usuários estão com a pontuação zerada. No caso você esta logado com alguma conta que possui pontos? Por fim, vamos testando as possibilidades baseando-se no que falamos aqui
  7. Tente fazer o seguinte: Selecione exatamente a parte do código do formulário contato abaixo: <div class="container-login100-form-btn"> <button type="submit" class="login100-form-btn"> Enviar </button> </div> <br> <div class="container-login100-form-btn"> <button type="reset" class="login100-form-btn"> Limpar Campos </button> </div> Em seguida, por cima dessa seleção que você fez, cole o script abaixo: <?php $db = new PDO('mysql:host=localhost;dbname=sistema', 'user', 'pass'); $sth = $db->prepare("SELECT premium_points FROM accounts WHERE userFK = ".$_SESSION["nickname"].""); $sth->execute(); $result = $sth->fetchColumn(); if ($result < 1): ?> <h6>Você não possui pontos suficientes para comentar</h6> <div class="container-login100-form-btn"> <button type="submit" class="login100-form-btn" disabled>Enviar</button> </div> <br> <div class="container-login100-form-btn"> <button type="reset" class="login100-form-btn" disabled>Limpar Campos</button> </div> <?php else: ?> <div class="container-login100-form-btn"> <button type="submit" class="login100-form-btn" >Enviar</button> </div> <br> <div class="container-login100-form-btn"> <button type="reset" class="login100-form-btn" >Limpar Campos</button> </div> <?php endif ?> O script acima desabilitará os botões "Enviar" e "Limpar Campos" caso o usuário tenha zero premium_points, caso contrário os botões "Enviar" e "Limpar Campos" estarão habilitados. Lembrando que você deve inserir as informações de conexão do banco de dados bem como se atentar para a parte da query "WHERE userFK" ser exatamente o nome da coluna da tabela "accounts" que armazena o ID do usuário cadastrado bem como o "$_SESSION["nickname"]" estar relacionado ao ID do usuário também. Dessa forma o resultado retornado estará relacionado ao usuário logado
  8. michelmir

    menu prsonalzado no bootstrap

    Seria algo similar a este exemplo? Também no site do Getty Image, o navbar deles utiliza collapse sidebar. Seria mais ou menos isso?
  9. michelmir

    Error Cookie de navegador

    Olá! Isso esta relacionado com a interação entre o navegador e o seu site, porém não quer dizer que o mesmo pode estar com problemas. Neste link aqui do stackoverflow, um usuário questiona o problema e recebe uma resposta do Google Lab a respeito. Esta em inglês mas se fuçar acho que pode encontrar algo a respeito que retire este aviso do console ou acrescente alguma linha no seu código.
  10. Então, basicamente você deverá criar um script php que tenha a função de atualizar os pontos do usuário quando o mesmo clicar no botão 'enviar comentário'. Pelo que entendi, você mencionou que existem outros bancos de dados que estão conectados entre-si neste projeto, correto? ou seria apenas um banco de dados com todas as tabelas nele? De qualquer forma, ambas as situações você deverá se atentar na forma como o script se conecta a esses banco de dados configurando o script de conexão conforme as suas configurações bem como a query SELECT e UPDATE. Abaixo, segue um script que atualiza a pontuação 'premium_points' da tabela 'accounts': Nome: update-pontos.php <?php // Initialize the session session_start(); $db = new PDO('mysql:host=localhost;dbname=', 'user', 'pass'); $sth = $db->prepare("SELECT premium_points FROM accounts WHERE userFK = ".$_SESSION["nickname"].""); $sth->execute(); $result = $sth->fetchColumn(); $pontos = $result - 1; $st = $db->prepare("UPDATE accounts SET premium_points = $pontos WHERE userFK = ".$_SESSION["nickname"].""); $st->execute(); $db = null; ?> Repare que na query 'WHERE userFK' você deve sustituir o 'userFK' pelo nome da coluna que armazena o id do usuário correspondente dentro dessa tabela 'accounts', ou seja, seria uma foreing key (FK) dentro da tabela 'accounts', pois na imagem que você postou não dá pra ver como se chama a coluna do ID do usuário nesta tabela. Outro ponto é o $_SESSION. No caso reparei que existe um '$_SESSION['nickname']'. O $_SESSION deve estar relacionado com o ID do usuário que esta logado pois dessa forma a query SELECT retornará corretamente os resultados relacionados ao usuário logado. Após ter criado o script 'update-pontos.php', abra o script que envia os dados do formulário para a tabela 'comentários' e inclua um 'include' na seguinte parte: if(mysqli_insert_id($conn)){ include_once 'update-pontos.php'; $_SESSION['msg'] = "<p style='color:green;'>Comentário enviado com sucesso, obrigado por enviar o seu feedback.</p>"; header("Location:/index.php/p/v/sucesso2"); } Dessa forma, caso a mensagem seja enviada corretamente, este script também chama e executa o script 'update-pontos.php' que atualiza a coluna 'premium_points' atualizando os dados relativos a mesma. Dê uma olhada neste exemplo que criei. Quando você inserir um comentário no campo e clicar no botão enviar comentário, a mensagem é inserida na tabela 'comentários' e ao mesmo tempo, com o sucesso da mensagem enviada, o campo 'premium_points' é atualizado em uma outra tabela chamada 'accounts'. Por fim, basicamente a lógica é mais ou menos essa. Uns também criam funções para executar este tipo de tarefa outros preferem utilizar métodos simples desde que o script seja criado evitando sql injection. Tente adaptar ao seu projeto, lembrando de configurar a conexão conforme os dados do seu banco de dados, usuário e senha do mesmo. Caso alguém deseje acrescentar alguma melhoria, fique a vontade.
  11. michelmir

    CSS condicional

    Dê uma olhada neste exemplo.
  12. O script comentario.php contém uma tabela chamada comentário com colunas nome, mensagem, sendo e created. No caso, qual tabela esta a coluna pontos? Se puder, me diga o nome da tabela onde esta a coluna pontos e suas respectivas colunas pra eu poder adaptar o script que atualizará os pontos pra você.
  13. Olá! Baseando-se nesta parte da sua questão: Você pode usar PHP e MySql como solução montando um script para debitar o ponto a cada vez que usuário realizar um submit no formulário. No caso, partindo que você já tem um sistema de login de usuário, você pode criar um script php que ao ser chamado atualiza a coluna "pontos" no MySql. Abaixo segue um script básico com função de atualizar a coluna pontos quando o botão submit do formulário "comentários" for clicado. Repare que no início do mesmo contém um "session_start()" que tem como função armazenar o id do usuário durante o seu login. Esse número ID é usado para selecionar dados relativos a ele : <?php // Initialize the session session_start(); if(isset($_POST['submit'])){ include 'pdo_connection.php'; $sth = $db->prepare("SELECT pontos FROM users WHERE id = ".$_SESSION["id"].""); $sth->execute(); $result = $sth->fetchColumn(); $pontos = $result - 1; $st = $db->prepare("UPDATE users SET pontos = $pontos WHERE id = ".$_SESSION["id"].""); $st->execute(); $db = null; } ?> E abaixo, o script que inseri o comentário, por exemplo. Nesse script php, o comentário é inserido na coluna "comentario" do MySql onde ao mesmo tempo ele chama o script php (update-pontos.php) acima onde atualiza a pontuação depois do comentário ter sido inserido: <?php // Initialize the session session_start(); $link = mysqli_connect("localhost", "root", "", "system"); // Check connection if($link === false){ die("ERROR: Could not connect. " . mysqli_connect_error()); } // Escape user inputs for security $comentario = mysqli_real_escape_string($link, $_REQUEST['comentario']); // Attempt insert query execution $sql = "INSERT INTO comentarios (comentario, usuarioFK) VALUES ('$comentario',".$_SESSION["id"].")"; if(mysqli_query($link, $sql)){ include_once 'update-pontos.php'; header("location: comentario-inserido-com-sucesso.php"); } else{ echo "ERROR: Could not able to execute $sql. " . mysqli_error($link); } ?> Criei um sistema bem básico como forma de demonstração. Dê uma olhada e se possível baixe os arquivos para testar. No caso do banco de dados criei uma tabela para armazenar os comentários e uma tabela para armazenar usuários e seus pontos. Link para o sistema básico de testes
  14. Após alguns ajustes consegui encontrar uma solução. Após ter criado uma variável chamada "lista" para criar um objeto, fiz um ajuste no evento afterSelect do Typeahead onde após selecionar uma opção dentro do input text o evento Typeahead envia um valor relacionado ao item para dentro da div #imagem. Esta solução pode ser vista em funcionamento aqui. Segue o script ajustado: <script type="text/javascript"> var produtos; var lista = {}; // cria o objeto $ ( function () { $('#categoriaFK').on('change', function(){ var queryID = $(this).val(); $.ajax({ url:"fetch.php", method:"POST", data: { categoria: queryID }, dataType:"json", success:function(data) { console.log(data); $("#produtos").val (''); produtos = data; } }); }); $('#produtos').typeahead({ source: function ( query, result ) { result ( $.map(produtos, function (item) { return item.nomeProduto; } )); }, /* O ajuste foi feito aqui no evento afterSelect */ afterSelect: function(data) { $.each(produtos, function(idx, item){ lista[item.nomeProduto] = item.imagem; }); var img = lista[data]; $('#imagem').html(img); }, }); }); </script> Por fim, essa foi a solução que consegui encontrar. Caso alguém sugira uma modificação mais otimizada fiquem a vontade. Valeu!
  15. michelmir

    mostrar/esconder

    Vê se te atende. No caso utilizei Jquery para ocultar e mostrar os formulários Cadastre-se e login. Quanto ao style utilizei o Bootstrap: <!DOCTYPE html> <html lang="pt-br"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta charset="utf-8"> <head> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script> <head> <body> <div class="container" style="max-width:700px;"> <br> <div align="center"> <p><h2>Selecione uma das opções abaixo</h2></p> <br> <div class="row"> <div class="col"><button type="button" class="btn btn-info btn-block" id="cadasbtn">CADASTRAR-SE</button></div> <div class="col"><button type="button" class="btn btn-info btn-block" id="entrarbtn">FAZER LOGIN</button></div> </div> </div> <br> <div class="card" id="formlogin"> <div class="card-header"> FAÇA LOGIN </div> <div class="card-body"> <blockquote class="blockquote mb-0"> <form> <div class="form-group"> <label>E-mail</label> <input type="email" class="form-control" id="e-mail" placeholder="Insira o seu e-mail de cadastro"> </div> <div class="form-group"> <label>Senha</label> <input type="password" class="form-control" id="senha" placeholder="Insira a sua senha"> </div> <button type="submit" class="btn btn-primary btn-block">FAZER LOGIN</button> </form> </div> </blockquote> </div> <div class="card" id="formcadas"> <div class="card-header"> CADASTRE-SE </div> <div class="card-body"> <blockquote class="blockquote mb-0"> <form> <div class="form-group"> <label>E-mail</label> <input type="email" class="form-control" id="e-mail" placeholder="Insira o seu e-mail de cadastro"> </div> <div class="form-group"> <label>Senha</label> <input type="password" class="form-control" id="senha" placeholder="Insira a sua senha"> </div> <button type="submit" class="btn btn-primary btn-block">CADASTRAR</button> </form> </div> </blockquote> </div> </div> <br> </body> </html> <script> $('#formcadas').hide(); $('#formlogin').hide(); </script> <script> $(document).ready(function(){ $("#entrarbtn").click(function(){ $("#formlogin").show(); $("#formcadas").hide(); }); $("#cadasbtn").click(function(){ $("#formlogin").hide(); $("#formcadas").show(); }); }); </script>
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.