Ir ao conteúdo
  • Cadastre-se

GabrielSennaMs

Membro Pleno
  • Total de itens

    268
  • Cadastrado em

  • Última visita

  • Qualificações

    0%

Tudo que GabrielSennaMs postou

  1. @Preciouz Bom tem dois problemas na sua aplicação o primeiro é que na sua função "tokenVerify" você não está retornando nenhum valor de resposta. O segundo problema é que você não espera o retorno da request para validar a rota, já que o javascript vai fazer o processo ao mesmo tempo que valida a rota pro ser síncrono. Adicione o token "async" em sua função tokenVerify, para que ele a já como uma função sincrona, e depois adicione o token await na request do axios para fazer a função esperar o retorno do valor. import api from "./api"; async function tokenVerify() { let userToken = localStorage.getItem('usertoken'); if(userToken !== undefined) { return await api.post('/tokenverify', userToken) .then(res => (res.data.status == 200) ? true : false) .catch(erro => console.error(erro)); } return false; } export default { tokenVerify } A mesma coisa deve ser feita na sua criação de componente adicionando await e async.
  2. @pedraohf Bom primeiro você tem que chamar a view que adicionar a section, no caso a view que extende "welcome" e adicionar a section "content". Modifique a sua rota para isso Route::get('/', function () { return view('header'); }); Na sua view welcome você pode usar o método @hasSection para validar se a section foi existe @hasSection('content') @yield('content') @else <h1>Static WebSite title here</h1> @endif
  3. @JoaoE Falto você adicionar o catch do tratamento try...catch para trabalhar possíveis Exception. Aqui tem um tutorial falando sobre e como usar, https://www.w3schools.com/php/php_exceptions.asp. try { require_once "../../php/conexao.php"; $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "INSERT INTO `usuario` VALUE(NULL, :nomeUsuario, :nome, :email, senha, :formacao: :idade);"; } catch(Exception $e) { echo $e->getMessage(); }
  4. @gomes_gabriel Você pode usar uma session para isso! A documentação de como iniciar ela https://www.php.net/manual/pt_BR/function.session-start.php Um tutorial de como usar https://www.w3schools.com/php/php_sessions.asp
  5. @erickbarros O seu conteúdo está com algum problema para abrir link em uma nova aba. Erro: Abertura de '<URL>' bloqueada em uma nova janela porque a solicitação foi feita em um quadro em área restrita cuja permissão 'allow-popups' não está definida.
  6. @guicaseiroo Bom amigo você pode converter o seu menu em um componente. Caso você esteja a usar um framework de uma olhada na documentação dele e verifique se ele não tem uma página falando sobre, e no caso de usar o PHP puro, você pode incluir ele em sua página. Exemplo: menu.php <nav> <ul> <li><a href="/home">Home</a></li> <li><a href="/home">Sobre</a></li> <li><a href="/home">Contato</a></li> </ul> </nav> index.php <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <?php include "menu.php"; ?> </body> </html>
  7. @Alessandro Kennedy Bom se você está passando um props com o nome de app e não coloco o axios no indece req, como você quer acessar isso? Geralmente você defino isso no objeto de inicialização com vue ou declara uma constante com o axios. Você pode import. import axios from 'axios'; export default { name: "register", props: ['app'], data() { return { name: "", email: "", password: "", passwordAgain: "", errors: [] }; }, methods: { async onSubmit() { this.errors = []; if (!this.name) { this.errors.push("O campo nome não pode ficar em branco"); } if (!this.email) { this.errors.push("O e-mail nome não pode ficar em branco"); } if (!this.password) { this.errors.push("O campo senha não pode ficar em branco"); } if (this.password !== this.passwordAgain) { this.errors.push("Os campos de senhas devem ser iguais"); } if (!this.errors.length) { const data = { name: this.name, email: this.email, password: this.password, }; await axios.post("auth/register", data) .then((response) => { this.app.user = response.data; this.$router.push("/"); }) .cath((error) => { this.errors.push(error.response.data.error); }); } }, }, };
  8. @Thesalos Bom tem algumas formas de corrigir isso, vou citar duas formas. A primeira é colocando imagens com o mesmo tamanho, assim tudo vai ficar alinhado. A segunda é definindo uma altura para a div e forçando a img a fica nessa altura ou colocando a img em 100% de altura, dessa forma ela vai ficar com a altura da div.
  9. @Alessandro Kennedy Bom essa sua variável "this.app.req <-- req não foi definida". Você está usando qual API para fazer essas requisições? normalmente é o axios ou vue-htttp. Verifica se você instalo e configuro essa API no variável req.
  10. @thefill Bom presumindo que você já tenha algum conhecimento com React, você pode começar tentando consumir essa API.
  11. @Murilown Para resolver esse problema você deve usar o Ajax, aqui tem um tutorial falando sobre. https://www.w3schools.com/js/js_ajax_intro.asp
  12. @bigbossbr Você pode disparar o evento usando o método "dispatchEvent", com algumas modificações no seu código é possível fazer isso. for (let index in mapaTeclado) { document.getElementById(mapaTeclado[index]) .addEventListener("mouseover", (event) => { event.target.style.background = '#e4e4e4' }); document.getElementById(mapaTeclado[index]) .addEventListener("mouseout", (event) => setTimeout( () => event.target.style.background = '#000', 400 )); } const mapearTeclado = (evento) => { let tecla = evento.key; let teclaPermitida = () => Object.keys(mapaTeclado).indexOf(tecla) !== -1; if (teclaPermitida()) { let event = new MouseEvent('mouseover'), event_2 = new MouseEvent('mouseout'); document.getElementById(mapaTeclado[tecla]).click(); document.getElementById(mapaTeclado[tecla]).dispatchEvent(event); document.getElementById(mapaTeclado[tecla]).dispatchEvent(event_2); } } Infelizmente você não vai poder usar o efeito de houver do CSS, porém é possível aplicar a propriedade transition, deixa um efeito maneiro. .calculator button{ background-color: black; color: white; padding: 20px; border-radius: 5px; font-size: 1.5rem; outline: none; cursor: pointer; border: 2px solid black; box-shadow: 2px 2px 0px #555; transition: 0.4s; } button:hover{ transition: 0.4s; background-color: #e4e4e4; color: black; box-shadow: inset 2px 2px 0px #555; border: 0; }
  13. @bianca oliveira O problema é bem simples! Quando você clicka no input com o tipo(type) submit, que está dentro do elemento form, ele executa o evento de submit do elemento form, dessa forma ele redireciona a página para a action do elemento form, nesse caso é o "login.html", e não executa o seu script em javascript. Você pode modificar esse input para o tipo button e isso deve resolver o seu problema. <form class="conta" action="login.html" method="POST"> <h1>Primeiro acesso?</h1> <input type="button" value="Redirecionar" onclick="redirecionar()" /> </form> <script type="text/javascript"> function redirecionar() { window.location.href = "/url"; } </script> Você também pode usar um elemento "a" ao invés do botão com script. Vou colocar algumas alternativas que você pode usar. <a href="/url"></a> <button type="button" onclick="redirecionar()">Redirecionar</button> // ou <button type="button" onclick="window.location.href = '/url'">Redirecionar</button>
  14. @bigbossbr No código que eu passei tem no seu não Se você escrever na tela o endereço do arquivo vai ficar assim. "home/home.php" No seu código que está sem o ponto, e está saindo assim "home/homephp" O ponto que eu falo não é dá concatenação e sim da string "php", assim, ".php";
  15. @bigbossbr Você poderia usar uma estrutura de map para configurar a suas rotas. olhando os Métodos "file_exists", você está passando o nome do arquivo errado, nesse caso sem o ponto entre o nome do arquivo e sua extensão. Ele está procurado algo como "home/homephp" e não "home/home.php". Para resolver isso basta adicionar um .(ponto) antes do 'php'. $SERVER = ($_SERVER ?? null); $REQUEST_URI = filter_input(INPUT_SERVER, 'REQUEST_URI'); $INITE = strpos($REQUEST_URI, '?'); $DIR_BASE = 'new_site'; $FIRST_DIR = 'home/'; if ($INITE) : $REQUEST_URI = substr($REQUEST_URI, 0, $INITE); endif; $REQUEST_URI_PASTA = substr($REQUEST_URI, 1); $URL = explode('/', $REQUEST_URI_PASTA); $URL[0] = ($URL[0] != '' ? $URL[0] : 'home'); if (file_exists($FIRST_DIR . $URL[0] . '.php')) : require($FIRST_DIR . $URL[0] . '.php'); echo $URL[0]; elseif (is_dir($FIRST_DIR . $URL[0])) : if (isset($URL[1]) && file_exists($FIRST_DIR . $URL[0] . '/' . $URL[1] . '.php')) : require($FIRST_DIR . $URL[1] . '.php'); echo $URL[0]; endif; else : require($FIRST_DIR . '404.php'); echo $URL[0]; endif;
  16. @bigbossbr Teria como você mostra as classes do css "fixed-nav" e "static-nav"?
  17. @bigbossbr Bom amigo teria como informa com mais detalhes o que você desseja fazer, e se possivel passar o html e css. O código está funcionado sem prolema, eu fiz o teste aqui. <!DOCTYPE html> <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script> $(function () { $(window).scroll(function () { if ($(this).scrollTop() > $('#barra').offset().top) { $('#teste').removeClass('fixed-nav'); $('#teste').addClass('static-nav'); } else { $('#teste').removeClass('static-nav'); $('#teste').addClass('fixed-nav'); } }); }) </script> <style> .fixed-nav { position: -webkit-sticky; position: sticky; top: 0; padding: 5px; background-color: #cae8ca; border: 2px solid #4CAF50; } .static-nav { position: static; } </style> </head> <body> <h2>Página de teste</h2> <p id="teste" class="fixed-nav">Carro</p> <div style="height: 1000px;"></div> <p id="barra">Parede</p> <div style="height: 1000px;"></div> <p>Fim da página de teste</p> </body> </html>
  18. @Matheus Coutinho de Souza Bom amigo não tem como saber, niguem de fora vai saber como o sistema identifica isso, se não vai ser mais fácil bular eles, essas ocasions em que o sistema libera o acesso sem a necessidade de fazer o teste, tem como base a api do google que está conectada ao site, assim ele informa ao site que você é um humano e não um robo e libera o acesso. Se o seu caso de uso for para fazer um acesso como api ou fazer um web scraping, você ainda vai precissar fazer o RECAPCHA e isso trava o seu bot, porém os Chineses/Indianos deram um jeito de bular isso, basicamente você passa o RECAPCHA para a api deles e um Chines/Indiano faz o teste para o seu bot.
  19. @JonathanCruz Uma estrutura eficiente e basica para esses tipos de projeto, seria algo assim. Raiz src Controllers HomePage.php Middleware CSRFtoken.php Models Noticias.php Supporte.php cache data 0a 00043d103105bf0c3c64e64b1ad825651f8ebd5c resources view componets navbar.php footer.php homePage.php js main.js public index.php assets css style.csss img logo.png js main-mim.js config databaseConnect.php router.php kernel.php composer.json composer.lock .gitignore .gitattributes .env .env.example
  20. @Carlos Tempest Bom amigo o seu problema é simples. No seu form(elemento do HTML de formulario) quando você clicka em um elemento botão(button) ou input com a propriedade type(tipo) sendo "submit", ele vai executar um evento chamado submit, esse evento vai fazer uma requisição a outra página, caso você não tenha definido qual a página que ele deve fazer essa requicição ele vai requisitar a mesma página, passando os valores dos inputs do form via o método selecionado, e pro padrão o método é GET, esse método envia os dados pela url, e por esse motivo que você tem a impressão de que a página está reiniciando. Para corrigir isso, basta altearar o tipo do botão para button e também bloquear a chamada dessa evento no elemento form. // button <button type="button" id="pagar" class="btn btn-primary">Pagar</button> <button type="button" id="mostrar" class="btn btn-primary">Botão super legal :D</button> // form <form class="row g-3" onsubmit="return false;">
  21. @ferrarez Bom amigo tem um problema no seu código que modifica a propriedade value do input No final tem 3 aspas duplas e ai que tem um problema, ele está fechando no html assim, e dessa maneira ele vai dar erro no script onclick="document.getElementById(\'img-input-'.$NumberElements.'\').value = " Você pode troca o valor por null ou aspas simples com barra. onclick="document.getElementById(\'img-input-'.$NumberElements.'\').value = \'\'" ou onclick="document.getElementById(\'img-input-'.$NumberElements.'\').value = null" Não tem nada que execute tal ação no seu script. Um chute, pode ser porque o botão de remover imagem é do tipo submit, dessa maneira se você clickar nele ele vai fazer uma request e carregando a mesma página, assim dando a impressão de que ele removeu todos os valores dos inputs.
  22. @AlefSilva96Bom se você vai usar vue.js, você pode usar algum plugin de mask, como esse aqui: https://vuejs-tips.github.io/vue-the-mask/.
  23. @AlefSilva96 Tem varias maneira de você resolver isso. ,Um dela é fazer a verificação do valor digitado pelo usuário <input id="inputNumber" type="number" min="0"> <script> window.onload = function() { document.getElementById('inputNumber').addEventListener('keydown', function(event) { if (!Math.sign(event.key)) { event.preventDefault(); } }); } </script> Nesse exemplo ele bloqueia qualquer valor que não for um número isso inclui o simbolo "-", assim ele não pode inserir nenhum valor negativo. Obs..:Isso não vai impedir ele de alterar o valor no debug do navegador.
  24. @On For All Bom amigo a propriedade "writing-mode" não impossibilita o uso da propriedade "margin-left", provavelmente tem alguma outro coisa que está fazendo isso. Para que eu possa te ajudar você vai ter que postar o resto do seu css e o seu html.
  25. @Lucas R.Bom amigo você pode fazer isso criando uma data nova pegando como parametro o timestrap da data atual e adicionando 30 dias nela em milisegundos. const newyeartime = new Date(new Date().getTime() + 2592000000); const atualizarContador = () => { let currentTime = new Date() let difference = newyeartime - currentTime; let dias = Math.floor(difference / 1000 / 60 / 60 / 24); let horas = Math.floor(difference / 1000 / 60 / 60) % 24; let minutos = Math.floor(difference / 1000 / 60) % 60; let segundos = Math.floor(difference / 1000) % 60; console.log({ dias, horas, minutos, segundos }) } setInterval(atualizarContador, 1000); Você pode fazer a conversão da data do calendario selecionado pelo usuário em timestrap e depois fazer o calculo em milesegundos para adição na data atual e fazer o timer. Nesse exemplo eu fiz uma contagem para o "reveillon". const dataAtual = new Date(); const newyeartime = new Date(dataAtual.getTime() + (new Date('2020-12-31T24:00:00').getTime() - dataAtual.getTime())); const atualizarContador = () => { let currentTime = new Date() let difference = newyeartime - currentTime; let dias = Math.floor(difference / 1000 / 60 / 60 / 24); let horas = Math.floor(difference / 1000 / 60 / 60) % 24; let minutos = Math.floor(difference / 1000 / 60) % 60; let segundos = Math.floor(difference / 1000) % 60; console.log({ dias, horas, minutos, segundos }) } setInterval(atualizarContador, 1000);

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...

Curso de Hacker Ético

LANÇAMENTO!

CLIQUE AQUI E CONFIRA!

* Este curso não é ministrado pela equipe do Clube do Hardware.