Jump to content

Michael Granados

Members
  • Content count

    112
  • Joined

  • Last visited

Community Reputation

0 Comum

4 Followers

About Michael Granados

  • Birthday 05/25/1984

Informações Pessoais

  • Sexo
    Masculino
  • Localização
    Santana - São Paulo
  • Interesses
    programação, php, python, ruby on rails, design, e-commerce

Contato

Recent Profile Visitors

1078323 profile views
  1. Michael Granados

    Problema com variável $_GET ao passar parâmetro para o SQL

    Só, PELAMORDEDEUS gatanta que o usuário não consiga alterar a query com outros dados... tipo: https://suapagina.local/produtos?sct_id=%27%20OR%20%27%27%20=%20%27 Que, escapado fica assim: https://suapagina.local/produtos?sct_id=' OR '' = ' Que, acaba gerando a seguinte variável no seu script: <?php $_GET['sct_id'] === "' OR '' = '"; // true E, consequentemente, sua query fica assim: SELECT * FROM psd_produtos WHERE ctg_id = 1 AND sct_id = '' OR '' = '' Deixando o usuário listar o que quiser ou mesmo executar outras queries como apagar os produtos de sua loja. Recomendo você estudar sobre escapamento e preparação de queries. Referencias: https://www.php.net/manual/pt_BR/function.mysql-real-escape-string.php https://www.php.net/manual/pt_BR/mysqli.real-escape-string.php https://www.php.net/manual/pt_BR/pdo.prepare.php https://imasters.com.br/back-end/sql-injection-com-php
  2. Michael Granados

    Api Emby JavaScript

    Olá @luannsr12, conseguiu resolver seu problema?
  3. Michael Granados

    limitar itens paginação...

    Olá, @marcelocardoso. Conseguiu resolver?
  4. Michael Granados

    busca em data attribute (jquery)[RESOLVIDO]

    Eu só faria um pouquinho diferente... $('#search').on('input', function () { var search = $.trim(this.value).replace(/"/g, '\\\"'); if (!search) { return $('[data-search]').show(); } $('[data-search]') .hide() .filter('[data-search^="' + search + '"]') .show(); }); A ideia é só deixar mais fácil de entender...
  5. Michael Granados

    validar data maior que atual

    Olá, dá uma olhada na respota do @luannsr12 lá na outra dúvida: https://forum.imasters.com.br/topic/582827-validação-de-data-maior-que-atual/
  6. Segue: https://jsfiddle.net/tf85bx9g/ Este é o javascript adicionado... aproveitei boa parte do exemplo que você passou. Mas basicamente o segredo está no setInterval e no clearInterval. Quanto à navegação você pode utilizar o window.history.pushState mas como você me parece um cara sagaz vou deixar você quebrar a cabeça :-) Qualquer coisa, grita! var slideshowInterval = null; function startSlideshow() { slideshowInterval = setInterval(function () { var next = $('.active').next('.bar'); if (!next.length) { next = $('.bar:eq(0)'); } next.click(); }, 2000); } function stopSlideshow() { clearInterval(slideshowInterval); } startSlideshow(); $('.slides') .on('mouseover', stopSlideshow) .on('mouseleave', startSlideshow); --- Referencias: http://api.jquery.com/next/ https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/clearInterval https://developer.mozilla.org/en-US/docs/Web/API/History_API#The_pushState()_method
  7. Michael Granados

    Player Musica fixo

    O player começa de novo por que você abre outra página com um player novo... é como se a cada mudança de página você fechasse o navegador e abrisse de novo: Algumas soluções: - SPA (single page application) - react - vuejs - navegação utilizando AJAX (jQuery, Backbone, etc) - criar páginas com frames (frameset) ou iframes Acho que a solução mais ráṕida com base no que você já em hoje, possa ser as páginas com frames... e depois mudar para um formato de SPA com calma... Referencias: https://www.w3schools.com/tags/tag_frame.asp https://www.w3schools.com/tags/tag_frameset.asp https://www.tutorialspoint.com/html/html_frames.htm
  8. Hmmm... esse exercício é bom, ein... Vamos pensar em um único caso, só duas imagens, uma em cima da outra esmaecendo e aparecendo "em cima" da outra... como poderiamos fazer...? Imagino uma div com duas imagens dentro posicionadas absolutamente.... uma em cima da outra... com a mais em cima, partindo de transparência total, indo para 100% de opacidade... Pensei em uma estrutura como esta... <div class="image-box"> <img src="https://picsum.photos/id/1008/200/200" alt="" /> <img src="https://picsum.photos/id/1012/200/200" alt="" /> </div> E fazer a mágia da animação com CSS... aglo assim... .image-box { position: relative; /* as imagens vão se basear na posição deste elemento para saber sua referencia no plano X, Y */ width: 200px; height: 200px; display: inline-block; /* só para deixar uma do lado da outra */ } .images-box > img { width: 200px; height: 200px; } @keyframes reveal { /* nossa animação, aqui vai o nome de referencia */ 0% { opacity: 0; } 100% { opacity: 1; } } .image-box > img + img { /* uma imagem que apareça depois de outra imagem... */ position: absolute; /* posição absoluta, ou seja, fica "voando" sobre os outros elementos, sua posição se baseia naquele position relative lá em cima */ top: 0; left: 0; animation: reveal 5s ease 5s 1 normal forwards; opacity: 0; /* precisa informar o valor inicial pra não ficar pulando... */ } É... até que ficou bom... https://codepen.io/dgmike/pen/ZNrNvO?editors=1100 Agora, vamos colocar um javascript pra ficar legal... a animação leva em torno de 10s, 5s de espera e 5s de animação de fato (veja a referência do atributo animation). Então... vamos fazer com que o script remova a primeira imagem e adicione uma nova imagem depois, dando inicio a um novo ciclio.... que tal fazer isso em 15 segundos? function changeImage() { setTimeout(function () { var boxes = document.querySelectorAll('.image-box'); var box = Array.from(boxes).sort(function(){ return (.5 - Math.random()); })[0]; // pega um aleatório if (box.querySelectorAll('img').length > 1) { // se só tiver 1 imagem, a gente não remove ela var firstImage = box.querySelector('img'); firstImage.parentNode.removeChild(firstImage); // remove a anterior } var img = document.createElement('img'); // abaixo, geramos uma imagem aleatória img.src = 'https://picsum.photos/id/' + parseInt(Math.random() * 1000) + '/200/200'; img.alt = ''; box.appendChild(img); // e por fim, colocamos a imagem na box changeImage(); // e chamamos de novo, só pra não acabar nunca.... }, 15000); // 15 segundos... } changeImage(); // o inicio é no fim... Bom, já coloquei pra escolher uma caixa aleatória... mas acho que dá pra melhorar como colocar o tempo de 15 segundos aleatório entre 15 e 20... escolher mais de uma imagem por vez... bom, agora é contigo... Ah, segue a versão até agora.... https://codepen.io/dgmike/pen/KLQLBd?editors=1011 Qualquer coisa, grita! --- Referencias https://www.w3schools.com/cssref/css3_pr_animation.asp
  9. Michael Granados

    Desativar botão até todos os campos estarem preenchidos

    Só um detalhe, você está executando o validation no momento da atribuição da mesma, assim ele não vai validar a cada keyup e sim apenas quando o script chegar nesta linha. A correção seria... $("#ID_INPUT").keyup(validation);
  10. Talvez o que você quer fazer não precise de javascript: https://jsfiddle.net/5bL3kehj/
  11. Michael Granados

    Ajax e radio no form

    Adicionei lá as máscaras e a alteração, utilizei o removeEventListener e o addEventListener... também precisei colocar o mesmo ao iniciar a página... https://jsbin.com/yobubidifa/1/edit?html,js,output
  12. Michael Granados

    Ajax e radio no form

    E a dúvida seria...? Não, brincadeira... Bom, neste caso você tem três opções: - manipular a forma como o input vai manipular as máscaras encapsulando-as em um método só variando conforme o tipo de campo, recomendo limpar o campo no momento em que o usuário trocar de CNPJ para CPF e vice-versa - trocar o campo de input inteiro, atribuindo devida máscara no momento da troca de tipo de campos - deixar os dois campos na página com names distintos para fazer o tratamento do lado do servidor e apenas trocar o display/classe deles quando trocar o radio Use your illusion.
  13. Michael Granados

    Duvida simples if

    Achei o desafio bem interessante, uma vez que precisamos trabalhar com comparações muito numerosas... Por exemplo, para combinações de três botões existem nove possível alternativas, para 4 existem 16 e assim por diante. Basicamente é o número de botões elevado ao quadrado. Já havia visto um sistema funcional que aproveitava o comparativo binário para isso. Muitas configurações no PHP se valhem disso. Valeu a pena para estudar mais a fundo o assunto (que era bem fraco na minha mente) e implementei uma versão também... está muito rebuscada, mas quem sabe em outro momento faço uma refatoração mais elegante... segue: https://jsbin.com/resoxobiwa/1/edit?html,css,js,output Ah, o jsbin é interativo, você pode trocar a quantidade de "botões" no começo do script :-). --- Referencias: Utilizando operadores binários no mundo real: https://codeburst.io/using-javascript-bitwise-operators-in-real-life-f551a731ff5 Configuração de erros no PHP utilizando valores binários: https://www.php.net/manual/en/errorfunc.constants.php
  14. Michael Granados

    Ajax e radio no form

    Toma! HTML: <div> <fieldset> <legend>Escolha o tipo</legend> <label> <input type="radio" value="fisica" data-target="tipo_documento" name="tipo_documento" checked /> Pessoa Física </label> <label> <input type="radio" value="juridica" data-target="tipo_documento" name="tipo_documento" /> Pessoa Jurídica </label> </fieldset> <label> <span data-target="label_documento">Digite o CPF:</span> <input type="text" /> </label> </div> Javascript: var radioInputs = document.querySelectorAll('[data-target=tipo_documento]'); radioInputs.forEach(function (input) { input.addEventListener('change', function (event) { var pergunta = event.target.value === 'fisica' ? 'Digite o CPF:' : 'Digite o CNPJ:'; document.querySelector('[data-target=label_documento]') .innerText = pergunta; }); }); Resultado: https://jsbin.com/soqajorefu/3/edit?html,js,output O código está utilizando o atributo data-* para dizer quem é quem... os radios precisam ter o mesmo name pra funcionar. Acredito que você terá problemas com a função de máscara, mas aí já é outro problema.... Qualquer dúvida, grita! :-)
  15. @SrTunes Como diria Jack, vamos por partes... Primeira dúvida... Sobre o trecho do $.getJSON('/busca.php', { busca: valor }, fn); Por ser GET, a jQuery vai entender que se trata de um valor para apendar/adicionar/concatenar a sua URL, só que de forma mais segura, então você não precisa se preocupar em escapar caracteres como + ou &. Desta forma, digamos que valor tenha o conteúdo de pipoca. Então a jQuery vai montar a URL como /busca.php?busca=pipoca. Agora, o valor vem de uma instrução um pouquinho mais pra cima... var valor = this.value; No caso, this é o input onde você está colocando o texto e value é o valor desse mesmo input. A jQuery utiliza muito essa notação. Sobre a segunda dúvida, acho que vale a pena analisar o que está sendo enviado para o servidor utilizando a ferramenta de desenvolvimento do seu navegador. Sim, você tem.... rsss... Se estiver no chrome, aperte CTRL+i e vai abrir uma área de desenvolvimento, mas não se assuste... vá até a aba network ou rede em português e veja cada requisição acontecendo... Tem um botão com simbolo de proibido, ele limpará o histórico para facilitar.... limpe-o e faça a sua requisição... veja qual URL ele está tentando acessa e como ele está fazendo... Aqui um print do que estou falando... aconteceu um POST na URL do youtube que resultou em um 200 (OK/sucesso).
×

Important Information

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