Ir ao conteúdo
  • Cadastre-se

Diego72Marinho

Membro Júnior
  • Posts

    19
  • Cadastrado em

  • Última visita

Tudo que Diego72Marinho postou

  1. Mas, quais tipos de validações ? Porque dependendo do que você quer, talvez você terá que utilizar Middlewares. Mas fica complicado resolver a questão se você não passar quais validações seriam essas.
  2. Acho que o problema está nessa parte : var destreza = gp.value; Troca o "value" , pelo textContent ... Assim : var destreza = gp.textContent; E não esquece que você tem que colocar a function ataque() dentro das tags <script> </script> Com isso acho que vai funcionar
  3. Fala amigão . Boa noite! Vou te passar duas formas diferentes pra você fazer isso . Se tu for fazer com javascript, você não precisa de um loop, e você pode fazer isso com uma função com switch. Você precisará também inserir mais uma "div" pra cada "span" e "faq_text" que você anexar ao seu HTML. O HTML ficaria assim: <body> <div class="faq"><!-- FAQ 1 --> <div> <h2>De que forma posso inserir os registos das máquinas?</h2> <div class="faq_text"> <p>Existem 2 formas de inserir dados no website,<b class="black"> manualmente</b>, indo na aba <b><a href="form_insere_registos.php" class="href">Inserir Registos</a></b>, ou através da <b><a href="index.html" class="href">Consulta Avançada</a></b>, ambas localizadas na página inicial.</p> <p>De seguida, deve escolher a linha, para visualizar as máquinas correspondentes e após selecionada, aparecerão os <b class="black">números de SAP</b> de acordo com a máquina escolhida.</p> <p>Ao inserir registos pela consulta avançada <b class="black">não será necessário executar o passo acima mencionado</b>, pois a máquina já estará escolhida pelo utilizador.</p> <p>*Deve selecionar primeiro a linha ao inserir um registo, pois para escolher outros campos como <b class="black">nº de SAP</b> e a<b class="black"> Máquina</b>, será necessário saber qual linha foi escolhida</p> </div> <span class="btn" onclick="clickFaq(this)">&#43;</span> </div> <div> <h2>Como posso consultar os registos de alteração?</h2> <div class="faq_text"> <p>Pode usar a <b><a href="consulta_manual.php" class="href">Consulta Manual</a></b> ou a <b><a href="index.html" class="href">Consulta Avançada</a></b>, ambas localizadas na página inicial.</p> <p>No caso da <b><a href="consulta_manual.php" class="href">Consulta Manual</a></b>, aparecerá uma tabela com todos os registos de alteração da fábrica, com um sistema de procura por <b class="black">Máquina</b>, <b class="black">nº de SAP</b>, <b class="black">Linha</b>, <b class="black">Data</b>, <b class="black">Tipo</b>, <b class="black">Descrição</b> e <b class="black">Responsável</b>.</p> <p>Também contará com a opção de eliminar e editar registos.</p> <p>Se utilizar a <b><a href="index.html" class="href">Consulta Avançada</a></b>, aparecerá uma tabela com todos os registos da máquina escolhida, bem como as funcionalidades acima mencionadas.</p> </div> <span class="btn" onclick="clickFaq(this)" >&#43;</span> </div> </div><!-- FAQ 2 End --> </body> Note que nas spans que funcionam como buttons, irá a função "clickFaq(this)" em um onclick. E o script ficaria assim : <script> const faqTag = document.querySelectorAll('.faq'); function clickFaq(e , element ){ switch(e.parentElement.children[1].classList.value){ case "faq_text" : e.parentElement.children[1].setAttribute('class','boxClosed') e.innerHTML = `&#8722` break; case "boxClosed" : e.parentElement.children[1].setAttribute('class','faq_text') e.innerHTML = `&#43` break; } } </script> Note que dentro da função clickFaq(this) há referência a uma classe chamada "boxClosed". Então, dentro do seu CSS, insira uma classe com o mesmo nome da seguinte forma : O "display: none" que fará fechar a div. .boxClosed{ display: none } Agora , acho que valeria a pena você considerar fazer sua FAQ, usando somente HTML e CSS, com as tags : <details> <summary> . Ficaria assim seu HTML : <body> <details> <summary>De que forma posso inserir os registos das máquinas?</summary> <p>Existem 2 formas de inserir dados no website,<b class="black"> manualmente</b>, indo na aba <b><a href="form_insere_registos.php" class="href">Inserir Registos</a></b>, ou através da <b><a href="index.html" class="href">Consulta Avançada</a></b>, ambas localizadas na página inicial.</p> <p>De seguida, deve escolher a linha, para visualizar as máquinas correspondentes e após selecionada, aparecerão os <b class="black">números de SAP</b> de acordo com a máquina escolhida.</p> <p>Ao inserir registos pela consulta avançada <b class="black">não será necessário executar o passo acima mencionado</b>, pois a máquina já estará escolhida pelo utilizador.</p> <p>*Deve selecionar primeiro a linha ao inserir um registo, pois para escolher outros campos como <b class="black">nº de SAP</b> e a<b class="black"> Máquina</b>, será necessário saber qual linha foi escolhida</p> </details> <details> <summary>Como posso consultar os registos de alteração?</summary> <p>Pode usar a <b><a href="consulta_manual.php" class="href">Consulta Manual</a></b> ou a <b><a href="index.html" class="href">Consulta Avançada</a></b>, ambas localizadas na página inicial.</p> <p>No caso da <b><a href="consulta_manual.php" class="href">Consulta Manual</a></b>, aparecerá uma tabela com todos os registos de alteração da fábrica, com um sistema de procura por <b class="black">Máquina</b>, <b class="black">nº de SAP</b>, <b class="black">Linha</b>, <b class="black">Data</b>, <b class="black">Tipo</b>, <b class="black">Descrição</b> e <b class="black">Responsável</b>.</p> <p>Também contará com a opção de eliminar e editar registos.</p> <p>Se utilizar a <b><a href="index.html" class="href">Consulta Avançada</a></b>, aparecerá uma tabela com todos os registos da máquina escolhida, bem como as funcionalidades acima mencionadas.</p> </details> </body> Não sei se você já analisou a possibilidade de usar essas tags, se não, note que somente com elas no HTML, você tem efeito semelhante à função feita no javascript. Para mudar a setinha de abri e fechar para os símbolos "+ e - " você pode inserir o seguinte CSS: summary{ list-style-type: '+'; list-style-position: square; } details[open] summary{ list-style-type: '-'; list-style-position: square; } E sem javascript você faz o efeito de abrir e fechar do seu FAQ. Depois é só estilizar para ficar parecido com a imagem que você postou.
  4. Joguei seu algoritmo no VScode e entendi, agora, que tem um acúmulo dos assinantes nos valores anteriores. Eu não tinha notado isso. Nesse caso, vai precisar fazer uma modificação no código. Fiz, uma fórmula matemática pra que essa conta seja possível. E achei melhor alterar o último valor do objeto "parametro" de "null" para 20000000. Acabei de testar a função VerificarCampoInvalido() não deu erro, mas notei que quando escrevi aqui, eu coloque "VerificarCampoInvalio()", tá escrito errado, depois você vê se isso pode ser o motivo do erro. Modificações no código : <script> const numeroAssinantes = document.getElementById("numero_assinantes"); const precoAssinatura = document.getElementById("preco_assinatura"); const salario = document.getElementById("salario"); const parametro = { all:[ {assinantes : 25 , valor: 78}, {assinantes : 125 , valor: 70}, {assinantes : 625 , valor: 62}, {assinantes : 15625 , valor: 54}, {assinantes : 62500 , valor: 46}, {assinantes : 250000 , valor: 38}, {assinantes : 1000000 , valor: 30}, {assinantes : 8000000 , valor: 22}, {assinantes : 20000000 , valor: 14}, {assinantes : 20000000 , valor: 6 }, ] } function calcular (){ numeroAssinantes.value = verificarCampoInvalido() calcularSalario( parametro.all ) } function verificarCampoInvalido(){ return numeroAssinantes.value === "" || numeroAssinantes.value < 0 ? 0 : numeroAssinantes.value } function formula( aa , na, pv ){ return (aa * (p.valor +8 )) + (( na - aa ) * pv) } function calcularSalario( param ){ let assinantesAnterior = 0 for(p of param) { if(numeroAssinantes.value <= p.assinantes ){ precoAssinatura.value = p.valor salario.value = formula(assinantesAnterior,numeroAssinantes.value, p.valor) console.log(p.assinantes) break; } else{ assinantesAnterior += p.assinantes console.log(assinantesAnterior) } if( numeroAssinantes.value > parametro.all[ parametro.all.length-1].assinantes){ precoAssinatura.value = p.valor salario.value = formula(assinantesAnterior,numeroAssinantes.value, p.valor) } } } </script> Depois tu dá uma olhada se consegue melhorar esse código com o método reduce().
  5. Pelo que eu entendi do seu algoritmo, se o número de assinantes for menos de 25 o valor do serviço seria de 78, se for maior que 25 o valor seria 70, assim por diante. Se for isso, o correto seria : assinantes : 25 , valor: 78 Mas você pode modificar e inserir novos valores no objeto "parametro", que automaticamente a função calcularSalario irá incorporar. Ai tu dá uma testada.
  6. Não precisa criar tudo do zero. Mas você vai precisar inserir algumas linhas de código no seu sistema. Porque precisa autentificar a transação. Você precisa linkar seu site com um gateway de pagamento, há vários. Te recomendo esses : Stripe, Juno, Pagar.me, Paypal e Mercado Pago.
  7. Pelo que entendi, um esboço de refatoração do seu código, poderia estar em separar essa função em duas e chamar essas duas funções na função calcular(). Poderia também remover todas essas variáveis : ""valorSalario1, valorSalario2 ...." e lançar o resultado, somente em uma variável, ou direto na input. Poderia remover essa correção que você faz no laço for, do tipo " (i - 25) ", Entendi porque você faz isso, pra remover o valor anterior ao if, e a multiplicação ficar correta, mas também tem como remover. E organizar todos esses parâmetros em um objeto. Um esboço , mais ou menos ficaria assim : <script> const numeroAssinantes = document.getElementById("numero_assinantes"); const precoAssinatura = document.getElementById("preco_assinatura"); const salario = document.getElementById("salario"); //NOTE QUE AS CONSTS ESTÃO FORA DA FUNÇÃO function calcular (){ const parametro = { all:[ {assinantes : 25 , valor: 78}, {assinantes : 125 , valor: 70}, {assinantes : 625 , valor: 62}, {assinantes : 15625 , valor: 54}, {assinantes : 62500 , valor: 46}, {assinantes : 250000 , valor: 38}, {assinantes : 1000000 , valor: 30}, {assinantes : 8000000 , valor: 22}, {assinantes : 20000000 , valor: 14}, {assinantes : null , valor: 6 }, ] } numeroAssinantes.value = verificarCampoInvalio() calcularSalario( parametro.all ) } function verificarCampoInvalio(){ return numeroAssinantes.value === "" || numeroAssinantes.value < 0 ? 0 : numeroAssinantes.value } function calcularSalario( param ){ for(p of param) { if(numeroAssinantes.value <= p.assinantes ){ precoAssinatura.value = p.valor salario.value = numeroAssinantes.value * p.valor break; } if(p.assinantes === null){ precoAssinatura.value = p.valor salario.value = numeroAssinantes.value * p.valor } } } </script> Aconselho você usar a const para fazer referência aos elementos do html ao invés do var. Basicamente na função calcular(), constaria o objeto com os parâmetros de assinantes e valor, o "parametro" , mais uma função que verificar se o valor inserido no campo "numeroAssinantes" foi inválido e uma função que calcula o salário . E você pode colocar o TimeCounter() dentro da função calcular(), também, eu não pus ai , porque só reescrevi a função a calcular. Então na minha opinião, você poderia fazer mais ou menos esses procedimentos. Falou
  8. Consegui progredir um pouco. Agora consigo mudar as imagens, dinamicamente. No campo picture do FB.ui, eu insiro o endereço da imagem e a troca da imagem padrão é feita, corretamente. Porém, eu necessito inserir na api do facebook, não uma imagem já existente, mas sim, um blob ou um elemento base64, pois o card do usuário vem de um canvas. Alguém teria ideia de como eu poderia inserir isso na api do facebook ? <script> window.fbAsyncInit = async function() { FB.init({ appId : '********** ID ***********', xfbml : true, cookie : true, version : 'v13.0' }); FB.AppEvents.logPageView(); FB.ui( { method: 'feed', name: ' teste name', caption: 'teste caption', description: ( 'Descrição da aplicação'), link: 'https://link da aplicação.com', picture: ' somente abre imagens já existentes ' }, function(response) { if (response && response.post_id) { alert('publicado'); } else { alert('não publicado'); }}); }; (function(d, s, id){ var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) {return;} js = d.createElement(s); js.id = id; js.src = "https://connect.facebook.net/en_US/sdk.js"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); </script> .
  9. Não sei qual é a finalidade da sua calculadora, mas, te recomendo dá uma olhadinha na função eval().
  10. Se for pra deixar esse texto " " , centralizado a cima da input. Você deve modificar um pouquinho o style do "bloco1" . Ficaria assim : .bloco1{ background-color: RGB(49, 48, 48); height: 40%; width: 100%; display: flex; flex-direction: column; align-items: center; }
  11. Amigo, esse código está correto. O que tá faltando é você jogar esse evento dentro das tags script. <h1>Mudar de página com Select</h1> <select> <option>Selecione uma opção</option> <option value="https://www.google.com">Google</option> <option value="https://www.facebook.com">Facebook</option> <option value="https://www.twitter.com">Twitter</option> </select> <script> let selectEl = document.getElementsByTagName('select'); selectEl[0].addEventListener('change', function() { location.href=this.value;}); </script>
  12. Estou implementando um puzzle, que será hospedado na web, e está sendo feito em: javascript, handlebars, css e usando nodejs no back-end. Minha ideia é que ao final do jogo o usuário tenha a opção de compartilhar no facebook, um pequeno dashboard contendo algumas informações do seu desempenho no jogo, como, score, tempo gasto, etc. Eu já vi esse tipo de funcionalidade em alguns jogos. Pensei que poderia usar o opengraph para implementar essa funcionalidade, usando as metas tags <meta og:"url" ...> , <meta "og:type" ...>, <meta "og:title" ...>, <meta "og:description" ...>, <meta "og:image" ...> . Minha ideia era linkar dinamicamente a og:image com o endereço da screenshot da dashboard, e quando o usuário clicasse no button de compartilhamento, a screenshot da dashboard apareceria. Mas, logo vi que isso não seria possível, pois, além de demorar alguns minutos para que os rastreadores do facebook assimilem o novo endereço da imagem, o facebook limita o números de mudanças nos parâmetros das metas tags og. Passei o dia olhando a documentação do facebook, porém não encontrei uma forma de fazer esse tipo de compartilhamento. Há muita coisa na API de desenvolvedor do facebook, e muitas permissões diferentes que um app pode solicitar. Se tiver esse tipo de coisa, não achei. Alguém sabe como eu poderia implementar isso à minha aplicação ? Desde já valeu !
  13. @Rui Guilherme Entendo sua questão, mas quando uma pergunta for inserida pelo o administrador, haverá uma série de possíveis respostas. Agora, para teste, estamos colocando só uma, mas por exemplo. Vamos supor que a resposta para uma pergunta seja, "Jesus Cristo" ... Quando for inserir essa pergunta no sistema , haverá diversas previsões de respostas para a questão- "Jesus", "Cristo" ou "Jesus Cristo", todas essa possibilidades serão prevista pelo sistema. Haverá no db, um array que comportará resposta1 , resposta2, resposta3 etc... sobre: "Nessa situação, como é esperado que a pessoa consiga responder? Considerado que a pessoa pode colocar um acento errado ou uma vírgula, ou até mesmo o instrutor ter cometido esse erro, e após ter feito o hash da resposta, exceto que o instrutor saiba EXATAMENTE a resposta, inclusive dos erros essa solução de transformar em hash pode ser tornar uma grande dor de cabeça, ainda mais considerado um grande uso." Usando expressões regulares na inserção do db e no campo de entrada em que o usuário estará entrando com a resposta, ajudará na questão de acentuação e caracteres especiais, se ele entrar com a resposta "ambulância vermelha", "âmbulancia vermelha" ou "ambulancia vermelha" não fará diferença, pois em todas as situações a saída será "ambulanciavermelha" o que não seria aceito, são respostas do tipo - "ambulância vermelia" esse tipo de erro ortográfico não seria tolerado. Também as perguntas usadas serão de respostas objetivas Em qual ano foi a tomada da Bastilha ? R = 1789 ou R= Mil Setecentos e Oitenta e Nove Quem, segundo a tradição franco-brasileira, inventou o avião ? R= Alberto Santos Dumont /ou/ R= Santos Dumont /ou/ R= Santos Dumon /ou/ R= Santos Dumonte (No caso de nomes próprios uma colher de chá) Qual é a maior pirâmide do Egito ? R= Queops R= Gizé /ou/R= pirâmide de Quéops R= pirâmide de Gizé Tem que ter uma previsão para possíveis respostas ...claro. [observando nos exemplos acima, que o sistema retirará os caracteres especiais] Também poderá ser criado um campo recomendações no db , para ser exibido acima do input que será inserido a resposta. Vamos supor que a resposta seja Tiradentes ou Joaquim José da Silva Xavier- Ao fazer tal pergunta...a recomendação será : "insira somente o nome completo ou apelido". Isso já ajudaria ao usuário na resposta. Para casos de uma resposta malfeita ou uma inserção ao banco de dados com qualquer erro, as perguntas terão uma espécie de curadoria dos usuário. Os usuários poderão opinar sobre a questão. Vamos supor que o usuário tenha 20 segundo para responder e ele ache que respondeu correto e mesmo assim retornou incorreto, após o sistema exibir "você errou" , terá uma espécie de campo para ele reclamar em caso de possível erro. Com isso perguntas que possuírem um número elevado de reclamações serão excluídas. Mas concordo com você, que pra um aumento da segurança usando criptografia, nas respostas e perguntas, aumentará as dificuldades para a implementação do sistema.
  14. Obrigado pela ajuda ! Sim.. exatamente! Só retorna o true ou false ! Não ia comentar , mas, só para demonstrar que há necessidade da encriptação. A aplicação em questão, se baseia em um jogo de perguntas e respostas, estilo "Perguntados", porém haverá uma moeda no jogo. Essa moeda poderá ser trocada por reais, caso o usuário ganhe um evento. O evento se baseia na competição entre os 30 melhores do mês. Mais ou menos, os usuários poderão ganhar ,em dinheiro, nesses eventos - até 5000 mil reais. Vai depender do quanto de moeda do jogo ele acumulou, no mês. Estimamos a média de 2200 a 5000 mil. Vamos supor que a aplicação "dê certo" , e cresça. Agora, a equipe, sou eu e mais dois , mas, "dando certo" , a equipe aumentará. Meu medo é que quem tem o acesso ao banco de dados, futuramente, vaze o banco de dados, ou se beneficie, de alguma forma, do acesso privilegiado. Quando passa a valer dinheiro, é complicado. Nos eventos, as perguntas serão inéditas, não podendo ser repetidas, só podendo ser usadas uma vez, logo, elas no db, serão etiquetadas de uma forma diferente, facilmente filtradas por quem tem acesso ao banco. As respostas teriam que ser encriptadas pelo motivo acima. As perguntas também serão, mas de forma diferente, o sistema de encriptação das perguntas já está pronto. Quando a pergunta entrar no banco, será encriptada, quando sair e forem exibidas, a string impressa será a original. Mas na verdade, só estou antecipando as preocupações . Esse problema será sanado, agora ou depois...
  15. Sim ! Obrigado ! desculpa minha falta de atenção! Na verdade... além do return fora de lugar como você bem corrigiu, esqueci de lançar no index do array à própria mudança. Pronto, agora tá corrigido ! function transformarParaMaiusculo(palavras){ for( let i = 0 ; i <= palavras.length-1 ; i++ ){ palavras[i] = palavras[i].toUpperCase() } return palavras } Já se quiser fazer uma coisa um pouco mais sofisticada, tem como eliminar o for , usando o map function transformarParaMaiusculo(palavras){ return palavras.map( p => p.toUpperCase()); }
  16. Parece que você tá usando a função como se fosse array. Acho o que você quer é isso : function transformarParaMaiusculo(palavras){ for( let i = 0 ; i <= palavras.length -1 ; i++ ){ palavras[i]. toUpperCase() return palavras } }
  17. Era bom você colocar também o seu código HTML, pra gente vê os types das inputs que você tá usando. No nascimento, você captura um type: date? um number ? uma string ? Se for só o ano de nascimento, então provavelmente é um type 'number'. O que você pode fazer, pra reduzir esse teu código, e não enche-lo de ifs, seria trabalhar com operadores ternários diretos nas variáveis, já fazendo o papel dos ifs . Um exemplo, imagina que essas constantes são os valores que você captura das sua inputs pelo o DOM, e que existe um fulano chamado Fiódor Dostoiévsk que quer ver se pode se aposentar ou não ... Ai segue o código const nome = "Fiódor Dostoiévisk" const anoDenascimento = 1821; const anoCorrente = 2021; const tempoDetrabalho = 40; let calcularAno = anoCorrente - anoDenascimento const resposta = calcularAno > 64 ? "Requerer aposentadoria" : "'Não requerer aposentadoria" || tempoDetrabalho > 29 ?"Requerer aposentadoria": "Não requerer" || calcularAno > 59 && tempoDetrabalho > 24 ? "Requerer aposentadoria" :"Não requerer aposentadoria" console.log(resposta) //irá retorna requerer aposentadoria Outra hipótese com o mesmo código. Já aqui, no caso do "Menino Moço", não irá retornar a aposentadoria const nome = "Menino Moço"; const anoDenascimento = 2001; const anoCorrente = 2021; const tempoDetrabalho = 5; let calcularAno = anoCorrent - anoDenascimento const resposta = calcularAno > 64 ? "Requerer aposentadoria" : "Não requerer aposentadoria" || tempoDetrabalho > 29 ? "Requerer aposentadoria": "Não requerer aposentadoria" || calcularAno > 59 && tempoDetrabalho > 24 ? "Requerer aposentadoria" : "'Não requerer aposentadoria" console.log(resposta) //irá retorna não requerer aposentadoria Notei que em seu código você retornava um false e um true nos resultados das condicionais. Você pode fazer isso com esse código também. É só substituir o "Requerer aposentadoria" , por true , e o "Não requerer aposentadoria" , por false
  18. Estou tendo problemas com o BCrypt. Estou querendo usa-lo para encriptar as respostas de uma aplicação de "Perguntas e Respostas", que estou implementando. A autenticação da minha aplicação, está OK, o BCrypt encripta e desencripta normalmente, porém estou tendo dificuldade para usar a mesma lógica do sistema de autenticação, para verificação das respostas corretas. Eu consigo entrar com a resposta encriptada no db, (estou usando MongoDB , mongoose, e o BCryptjs), porém quando vou comparar as hashes, sempre retorna false, mesmo a resposta estando correta. Se alguém puder me ajudar solucionar esse problema...agradeço ! **OBS :** Salientando, que já verifiquei o Buffer.byteLength() do valor digitado e do valor armazenado no db, ambos retornam 60. Também já tentei usar o compare, ao invés do compareSync, e também só retorna false. Já tentei fazer o compare dentro do verificar, também não funcionou. Meu db está configurado para receber respostas com até 100 caracteres, para não encurtar a hash. Já substitui const por var, e já experimentei tirar o await delas, porém, continua retornando false. Já tentei tirar o toLowerCase e o Trim , entrando com as strings originais tanto no db quanto na resposta digitada, porém, continuou com o mesmo problema. SEGUE OS CÓDIGOS : ESQUEMA DO BANCO DE DADOS ENTRADA DA RESPOSTA ENCRIPTADA NO BANCO DE DADOS VERIFICANDO RESPOSTA

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!