Ir para conteúdo

POWERED BY:

Omar~

Members
  • Total de itens

    1339
  • Registro em

  • Última visita

  • Dias vencidos

    15

Tudo que Omar~ postou

  1. Omar~

    Salvar dados na tabela com JAVASCRIPT

    Use AJAX para carregar um arquivo que irá registrar a avaliação. Nesse arquivo não use redirecionamento. Ao clicar no botão pode enviar a informação do que foi clicado por protocolo GET ou POST, tanto faz o que conta mesmo é como esse dado será tratado no back-end. Só um detalhe usar um cookie pode não ser o mais ideal, uma vez que o usuário pode está com cookies bloqueados no browser o mesmo limpar o cache ele vai poder avaliar novamente. Sugiro uma tabela para registrar o que o usuário já avaliou. Mas caso não seja um problema o usuário poder avaliar diversas vezes a mesma coisa, desconsidere....
  2. Omar~

    Manter o usuário logado

    Que nada cara é cedo para desistir... Ao logar você cria a session e o cokkie Caso ele entre novamente, checa se o cookie existe e a session não Se entramos nessa condicional chamamos o método checarAcesso Se ele retornar verdadeiro, criamos a sessão e pronto o usuário estará logado Veja esse meu projeto como eu aplico essa questão de forma bem simples https://github.com/Spell-Master/source-map/blob/master/modules/actions/user/login_v.php#L66 https://github.com/Spell-Master/source-map/blob/master/system/class/helper/SmUser.php#L30 https://github.com/Spell-Master/source-map/blob/master/index.php#L21
  3. Omar~

    Manter o usuário logado

    Bem, eu desconheço uma forma de herdar um objeto de uma classe para ser usado em um método estático. Para falar a verdade nunca nem vi a necessidade. Já o contrário é muito comum de se ver.... Se fosse comigo e fosse uma necessidade indispensável eu optaria por abandonar a herança e apenas criar um objeto para a classe mãe instanciando quando necessário. Mais ou menos nesse conceito: Em todo caso se a confusão chegasse a esse ponto com certeza eu estaria revendo a arquitetura das classes para não está fugindo da ideia de orientação a objeto.
  4. Omar~

    Manter o usuário logado

    Isso depende de projeto para projeto... Depende de quais dados significam um usuário logado dentro de uma sessão No genérico vamos supor que o usuário logou.... Então além da session eu registro um cookie (esse permanece salvo nos arquivos temporários do browser que ele esteja usando) Então existe ambos "usuário logado"... Se ele fechar o browser a session some mas o cookie permanece. O "pulo do gato" seria no caso comparar se o cookie existe e a sessão não. Se o cookie existir e a session não é que o o usuário deve permanecer logado logo então no cookie devo armazenar alguma informação que identifique esse usuário. Vejamos (isso seria feito antes de tudo digamos no index.php): <?php if (isset($_COOKIE['usuario']) && !isset($_SESSION['usuario'])) { // Aqui você faz a coisa acontecer } Nesse caso o cookie "usuario" existe e a session não, ou seja eu tenho a informação do cookie então vamos supor que eu busque esse usuário no banco de dados e defina sua session com essa informação contida no cookie. Como isso é realizado antes de tudo, ao usuário acessar automaticamente será logado, suas informações carregadas o restante do código... "como vem depois" simplesmente identifica o usuário. Mas tenha cuidado um cookie até mesmo uma session são salvas na máquina do usuário. Por exemplo "como 99% usam uma coluna ID no bando" se o administrador do sistema é (id 1) e através dessa informação esse usuário tem acesso a tudo (só estou exemplificando).... Nada impede que alguém mau intencionado crie uma session ou um cookie em sua máquina com essa informação.... Assim logando automaticamente quando acessar como se fosse o administrador. Mas daí entramos no caso de autentificação de 2...3...4...5... fatores e por aí vai e isso é outra conversa.
  5. Exporte a tabela users e poste sua estrutura. Como foi inserido os dados na tabela? Para um login algo deve ser criado no caso uma global session, cookie ou ambos. Leia esse tópico pode ser útil para quem está engatinhando ainda. https://forum.imasters.com.br/topic/565800-crud-introdução-a-pdo/ Obs.: $logindb e $senhadb irão se re-escrever a cada volta do loop fetch_object e isso não é uma boa pela perca de desempenho existem formas melhores apenas sabendo se a consulta houve retorno
  6. Omar~

    Duvida excluir um valor do BD após 30 dias

    UPDATE tabela_do_usuario SET indicacao_do_vip = 0 Atualize a tabela de usuário definindo a coluna que indica quando o usuário vip para zero (1 era usuário vip / 0 sem vip) WHERE indicacao_do_vip = 1 Quando a coluna que indique o vip for um (1) "Ou seja só usuários com vip serão alvos" AND (dias_vip IS NULL OR dias_vip < CURDATE()) E quando a coluna de contagem de dias for nula ou a data registrada for menor que a data atual Na verdade essa parte pode ser otimizada ficando só AND dias_vip < CURDATE() Não precisa pegar o valor nulo pois se é nulo nunca teve um vip registrado ^^ Então digamos que a data de término desse vip seja 2021-01-01 e no momento do login for 2021-01-02 (um único dia a mais) a tabela era atualizada. O que eu fazia para definir um vip era atualizar a coluna que registrava que aquele usuário era vip para 1 (um) e a data de término para x dias contando a partir dos dias aplicados exemplo: <?php $periodo = 5; /* Cinco dias */ $usuario = 99; /* ID da conta do usuário */ $query = " UPDATE tabela_do_usuario SET indicacao_do_vip = '1', dias_vip = DATE_ADD ( CURDATE(), INTERVAL {$periodo} DAY ) WHERE id_da_conta = '{$usuario}' "; Assim sendo se hoje era 2021-06-15 o término do vip seria 2021-06-20 então qualquer usuário que logasse no dia posterior involuntariamente atualizara o vip de todo mundo. Veja o script em linguagem C++ que fiz ao qual eu comandava IN-GAME a coisa toda, der uma olhada pode ser útil para que possa elaborar seu sistema aí, pois não se tratava só de adicionar ou remover vip e sim adicionar mais dias ou remover dias:
  7. Omar~

    Duvida excluir um valor do BD após 30 dias

    @Xicara Durante 8 anos anos fui administrador de um servidor de jogo online (Ragnarok Online), ao qual possuía sistema de conta vip. Para minha realidade eu simplesmente apliquei que quando o usuário logasse comparava a data atual com a data de seu início de vip. Sendo que a cada login a tabela se atualizava removendo o período de acordo com o dia em que ele logou. Exemplo: UPDATE tabela_do_usuario SET indicacao_do_vip = 0 WHERE indicacao_do_vip = 1 AND (dias_vip IS NULL OR dias_vip < CURDATE()) Então mesmo que não seja o usuário específico qualquer usuário que logasse atualizava os dias vip de todos usuários. Essa coluna de dia vip nada mais era que uma coluna date. Como disse esse conceito já era o suficiente para minha realidade. Porém você diz que quer a coisa automatizada, então não há outra forma a não ser usar uma tarefa CRON como o próprio @Matheus Tavares disse. São suas únicas alternativas ou atualiza a tabela pelo login seja o próprio usuário seja qualquer um ou usa um cron job. Ao invés de ficar tentando fazer gabiarras grotescas de código.
  8. Omar~

    [Resolvido] Erro ao enviar form com PHP 8.0.6

    Aparentemente o código da class está correto. Porém acredito que a falta de um construtor seja o problema, o PHP 8 está cheio de frescuras, muito dos meus códigos também tive de fazer alterações para funcionar na versão. Tente usar essa classe ela é para captura de super globais: Exemplo: <?php $post = GlobalFilter::filterPost(); // Obtem tudo que está na super global $_POST if ($post) { var_dump($post); // No seu caso >>>>> echo $post->name; } else { // Nenhum $_POST existente o valor de $post é (false) }
  9. Omar~

    habilitado ou desabilita input

    Isso é relativamente simples. Você precisará de recurso AJAX para não recarregar a página. Vou lhe apresentar um conceito pois para um exemplo mais preciso conforme você disse, tem que ser feito com os dados de seu código. Mas só pela lógica qualquer um consegue fazer. Arquivos necessários (para execução correta do AJAX): https://github.com/Spell-Master/sm-web/tree/master/javascript/AjaxRequest Essa seria o arquivo onde estaria o botão O que temos então: Uma simulação de uma consulta no banco de dados que retorna os registros representados pelo array $resultado_do_banco. Fazemos então um loop nos resultados e a cada volta criamos um formulário identificado diferente para cada resultado. Cada formulário ao ser submetido executa uma função enviando como parâmetro o id do registro correspondente para podermos identificar qual é o formulário que é para enviar. E o arquivo registra.php Se você percebeu no primeiro arquivo temos uma condição ternária que se o resultado é de um tipo mostra o texto desabilitar e não é mostra habilitar. Essa mesma técnica você usa para modificar o resultado do banco de dados e atualizar o botão depois que o registro for concluído.
  10. Omar~

    Alterar tamanho da fonte

    Vamos ver se eu entendi.... Você tem acesso aos arquivos na hospedagem? - Se sim: Com a página aberta aí pelo browser, clique com o botão direito do mouse sobre o texto que está pequeno. Selecione o inspetor, com isso você terá tudo que foi processado a tag em sí e suas definições de CSS e qual arquivo está manipulando, então é só recriar o arquivo css e empurrar ele por ftp com as modificações desejadas. Só não entro em mais detalhes porque você teria que ter um mínimo básico de entendimento sobre propriedades de folha de estilo. Em todo caso se você pagou por essa ferramente você deveria ter sim suporte a coisas como essas
  11. Omar~

    Carregar página com Ajax e executar Scripts ou Jquery

    https://github.com/Spell-Master/sm-web/tree/master/javascript/AjaxRequest O AjaxRequest.js ao carregar a resposta do XMLHttpRequest faz a leitura do conteúdo se houver alguma tag script ele os re-escreve escapando do buffer, assim esses vão funcionar independente do tipo de requisição. Se for um broken-script a resposta nem carrega pois quebra o código do ajaxrequest assim também protegendo a integridade do software que o executa. Só não sei se vai funcionar com essa porcaria "para não chamar de lixo que não serve para nada" o tal do jQuery.
  12. Omar~

    Página em html, css e javascript

    Aparentemente não há problemas com o link então o que podemos presumir é erro do html. Pode ser alguma tag não fechada, tag como por exemplo todas tag <img> do documento não foram fechadas... <img src="imagemqualquer.jpg" alt="" /> <!-- Fechando a tag "/>" --> No entanto pode não ser isso. A melhor forma que você pode descobrir a raiz do problema aí é através do inspetor do browser. Existe também a possibilidade de um script está manipulando os hiperlinks ou um modo reescrita do apache no caso do serve-side.
  13. Omar~

    Como alterar um texto conforme o horário?

    É algo até bobo de lhe responder, pois se um horário vai de A a B é uma coisa e X a Y etc... Portanto é só comparar o valor do seu relógio aí se for algo entre uma hora e outra é só alterar o texto da suposta tag h1 que a propósito essa tag só deve ser usada como título de um contexto e não levianamente...
  14. Omar~

    efeito transition

    <style> #myDIV { background-color: red; width: 0; height: 0; opacity: 0; transition: 1s } #myDIV.exemplo { width: 200px; height: 200px; opacity: 1 } </style> <button onclick="myFunction()">click</button> <div id="myDIV"></div> <script> var myDIV = document.getElementById('myDIV'); function myFunction() { myDIV.classList.toggle('exemplo'); } </script>
  15. Omar~

    Editar um css usando javacript

    Quando for postar código tenha o bom senso de usar a ferramenta "Code" do editor aqui. É o botãozinho "<>" na barra de ferramentas do ckeditor, com esse simples gesto você agiliza a interpretação do código para quem vai te ajudar. - Ao problema.... Você não pode usar o evento "click" em cima do input porque quem recebe esse evento é a tag label, portanto para que der certo você deve verificar o click no local correto. Porém como label está vinculado ao input você pode detectar cada alteração desse input. Vejamos: <nav class="menu" id="principal"> <ul> <li><a href="#" class="home">Home</a></li> </ul> </nav> <input type="checkbox" id="chk" name="exemplo" /> <label for="chk">Clique Aqui</label> <script> var chk = document.getElementById('chk'), menu = document.getElementById('principal'); chk.checked = null; // Em caso de atulização do documento o checkbox muda para desmarcado function funcaoExemplo(e) { if (e.target.checked) { /* >>> Isso é válido se #principal for Absoluto(absolute) ou fixo(fixed) * menu.setAttribute('style', 'left:300px'); */ menu.setAttribute('style', 'margin-left:300px'); } else { // Caso não seja marcado remove o atributo style menu.removeAttribute('style'); } return (false); } chk.addEventListener('change', funcaoExemplo, false); </script>
  16. Omar~

    Javascript passar valores do GET para o input

    A sua dúvida é muito vaga... Você diz: passe valores do GET (Que é um protocolo URL) Mas o código você apresenta é um prototype de um objeto Então não faz sentido algum o título em questão para a dúvida Bom, se você quiser capturar as entradas GET pode fazer assim: var entradasGET = location.search.slice(1).split('&'), indices = [], objetos = {}; entradasGET.forEach(function (e) { indices = e.split('='); objetos[indices[0]] = indices[1]; }); console.log(objetos); //Digamos a url assim: ?alguma_coisa=valor_A&outra_coisa=valor_B&mais_outra=valor_C //O resultado: Object { alguma_coisa: "valor_A", outra_coisa: "valor_B", mais_outra: "valor_C" } De fato nunca precisei e nunca ouvi falar de alguém que precisou mexer nesses dados no lado do usuário, isso é algo que sempre é usado no lado do servidor.... Mas se for a questão está aí. Porém se você quer obter a resposta de uma requisição, não vou reinventar a roda aqui pois já criei um magnifico script para essa finalidade: https://github.com/Spell-Master/sm-web/tree/master/javascript/AjaxRequest Mas se a questão for uma instância da classe XMLHttpRequest onload para o prototype responseText é sempre um boleano "true" então a função onload não pode ser usada porque a partir da instância load é válido (mesmo antes que a resposta exista). Tente então obter a resposta da requisição if ((request.readyState === 4) && (request.status === 200)) { // A resposta existe e está pronta para ser usada, portando pode ir para o manipulador do DOM document.getElementById('greeting').innerHTML = request.responseText; }
  17. Omar~

    Domínio bloqueado no antivírus

    - A princípio o domínio pode está em uma lista negra nos servidores do Avast como sendo algo fornecedor/disseminador de malwares. - Ou pode ser que a aplicação utilizasse de scripts nocivos tanto para o software quanto para o hardware de alguém que acessa. - Propagandas abusivas até demais o que se enquadra também no caso de scripts. - Certificados enganosos ou inválidos. - Tentativa de roubo de cookies ou qualquer tipo de dados do usuário. - Mineração de bitcoins. Não sei quanto ao comportamento do avast, mas é um ´software de proteção, portanto esses são os principais motivos ao qual ele pode chegar a bloquear um endereço. Ou simplesmente má configuração do seu avast aí.
  18. Omar~

    Imagem saindo deitada no PDF (dompdf)

    Não entrando em como o dompdf insere imagens pois o problema pode ser ele. E nem se essas essas imagens são enviadas por upload. Verifique a orientação da imagem, Provavelmente seja essa a questão. Por exemplo no meu smartphone uma foto tirada Se vista pelo visualizador de imagem do próprio fica normal. Se se vista por um documento html fica normal. Se vista pelo editor básico de imagem do meu Ubuntu ela fica de ponta-cabeça virada 180º. Se vista no Photoshop fica virada -180º. Se vista pelo visualizador de imagem do windows fica virada como espelho e 180º. E por aí vai.... Cada um interpreta a orientação de um jeito. Pode não ser o seu caso e pode ser que o próprio dompdf está fazendo m***** e desorientando a imagem (o que é bem provável). Mas se não for o caso tente alterar a orientação pelo exif da imagem. Para detalhes veja esse método dessa classe: https://github.com/Spell-Master/sm-web/blob/master/exemplos/corte-e-salvamento-de-imagens/ImageUpload.php#L194 Era um problema para mim então criei esse método dessa classe que ao enviar uma imagem por upload a classe automaticamente faz a correção da orientação quando necessário.
  19. Omar~

    Regra do if

    Que botão? O contexto PHP é para renderizar um script e não um botão. A propósito isso é inconsistente na renderização pois uma linha independente é gerada após a outra devido as várias repetições da função echo, seria ideal só usar uma vez a função e ir inserindo contexto por contexto para que exista somente uma renderização. Sei lá digamos que esse checkout.js irá criar algum botão no documento, isso não é problema PHP (back-end) e sim Javascript (Front-End). Se for esse o caso sugiro que busque a documentação ou contate o(s) desenvolvedor(es) do mesmo para esclarecimento como utilizar-lo
  20. Omar~

    Regra do if

    @biakelly como o methus já disse o uso dessas chaves "{ }" são para mostrar algo que já existe. Portanto nessa linha: Você não está mostrando e sim criando algo o que foge da regra dessas chaves, e nesse caso você pode concatenar.. echo "data-amount='" . $row['totalbrl']*100 . "'"; Além do mais você pode está escapando... <?php //echo " "cometendo um erro de escape" "; isso gera erro porque uma áspa fecha outra echo ' \'escapando com áspas simples\' '; echo " \"escapando com áspas duplas\" ";
  21. Omar~

    Transferir dados de uma tabela para um form em js

    Na verdade isso seria o caminho. Me estranha que você montou a lógica corretamente, porque não estaria funcionando? Talvez o uso de variáveis ao invés dos índices no resultado? Bom... Resultados de querys no php sempre nos retornam um array independente da aplicação de busca seja PDO seja MySqli, então o que podemos é percorrer esse array e a cada índice criar os elementos: <?php $banco_de_dados = [ ['id' => 0, 'nome' => 'Rio', 'endereco' => 'Rio de Janeio'], ['id' => 1, 'nome' => 'Paulo', 'endereco' => 'São Paulo'], ['id' => 2, 'nome' => 'Salvador', 'endereco' => 'Bahia'], ['id' => 3, 'nome' => 'Vitória', 'endereco' => 'Espirito Santo'] ]; ?> <table> <?php foreach ($banco_de_dados as $value) { ?> <tr id="cliente-<?= $value['id'] ?>"> <td data-nome="<?= $value['nome'] ?>"><?= $value['nome'] ?></td> <td data-endereco="<?= $value['endereco'] ?>"><?= $value['endereco'] ?></td> <td><button onclick="adicionar('cliente-<?= $value['id'] ?>')">Adicionar</button></td> </tr> <?php } ?> </table> Note que ao invés de usar a função echo do php toda hora apenas mandei exibir o valor usando <?= /* Algo a exibir */ ?>
  22. Omar~

    Transferir dados de uma tabela para um form em js

    Começando pelo principal problema que na verdade é: Vários erros em seu HTML. O atributo global #ID deve ser único pois seu objetivo é distinguir alguma coisa de outra. Portanto quando você declara vários: Entre os demais, você está cometendo um erro gravíssimo de interpretação e hierarquia no HTML por isso só funciona em um, porque só deveria existir em um. Ou seja nunca repita o #ID com a mesma propriedade! Você terá que construir algo que possa ser reaproveitado. Antigamente nessas situações tínhamos que compor um objeto com todos os valores, mas desde o html5 a coisa ficou mais fácil, temos um novo atributo global que podemos buscar no documento e esse assim como diversos outros podem se repetir. Então você só obtêm uma referencia única que pode ser um #ID para distinguir quais serão os elementos de busca. Veja isso: <table> <tr id="cliente-1"> <!-- ID "1" para o primeiro cliente --> <td data-nome="joão">João</td> <td data-endereco="endereço a">Endereço A</td> <td><button onclick="adicionar('cliente-1')">Adicionar</button></td> </tr> <tr id="cliente-2"> <!-- ID "2" para o segundo cliente --> <td data-nome="maria">Maria</td> <td data-endereco="endereço b">Endereço B</td> <td><button onclick="adicionar('cliente-2')">Adicionar</button></td> </tr> </table> Nome: <input type="text" name="nome" id="nome" /> Endereço: <input type="text" name="endereco" id="endereco" /> Perceba que definir os #ID diferente em cada coluna "tr" da table, e é assim que posso chegar até os atributos data que são meus alvos, apenas informando para a função o #id da coluna. var nome = document.getElementById('nome'), endereco = document.getElementById('endereco'), tdNome = null, tdEndereco = null; function adicionar(id_alvo) { var trID = document.getElementById(id_alvo); tdNome = trID.querySelector('[data-nome]').dataset.nome; tdEndereco = trID.querySelector('[data-endereco]').dataset.endereco; nome.value = tdNome; endereco.value = tdEndereco; } Basta que siga esse procedimento para adicionar mais campos como desejar. Completando... sobre erros de HTML.... Toda tag deve ser fechada! Mesmo que o browser percebe o erro e tenta corrigir, você pode se deparar com problemas na estrutura do documento, quanto mais problemas mais interpretações aleatórias pode acontecer pelo browser. Portanto quando declarar uma tag <input> não se esqueça que ela deve ser fechada. <input type="text" /> Mais de 90% dos problemas com css e javascript podem ser solucionados apenas escrevendo o html corretamente. Dica de desempenho... Evite criar variáveis dentro do escopo de uma função, porque consome uma certa % de memória RAM para criar, e apenas reescrever consome muitíssimo menos. Evite ao máximo buscar por elementos dentro do escopo de um função, lembre-se que quando você passa um getElementById por exemplo o javascript deve ler todo o documento para encontrar esse alvo. Se ele já foi buscado e encontrado, não há necessidade de encontrar-lo novamente. Mesmo que em diversos casos coisas como essas são indispensáveis, mas devem ser evitadas a todo custo.
  23. Omar~

    Dois resultados numa mesma condição

    A solução é fazer novamente um join na tabela de usuário Ou seja um para o autor outro para o editor. Na questão preferir então fazer o que sempre faço nessa situação: 2 selects e comparar os dados pelo php.
  24. Omar~

    Encurtamento de palavra no meio

    <?php function longText($string, $length) { $str = (string) $string; $keys = ((int) $length + 3); return (mb_strimwidth($str, 0, $keys, '...')); } $texto_para_encurtar = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit'; // Encurtando em 11 caracteres echo longText($texto_para_encurtar, 11); // Resultado "Lorem ipsum..."
  25. Omar~

    Adicionar e remover campos de texto com JS

    Nada mais é que um básico para carrinho de compras.... <form id="myForm"> <input type="text" name="qualquer_coisa"> <!-- Isso agiliza o script para que não precise ficar catalogando cada elemento antes de adicionar novo --> <div id="novos_inpus"></div> <button type="button" onclick="addInput()">+</button> <button type="submit">Enviar</button> </form> <script> var novos = document.getElementById('novos_inpus'); var quantidade = 0; // Contar e identificar input adicionado var maximo = 3; // Quantos input's podem ser adicionados? function addInput() { if (quantidade < maximo) { var novoInput = document.createElement('input'); var botaoRemover = document.createElement('button'); novoInput.type = 'text'; novoInput.name = 'novo[]'; // Como serão vários inputs o name deve ser um array novoInput.className = 'para colocar quantos classificador quiser'; botaoRemover.type = 'button'; botaoRemover.innerHTML = 'Remover -'; botaoRemover.className = 'para colocar quantos classificador quiser'; botaoRemover.addEventListener('click', removerInput, false); novos.appendChild(novoInput); novos.appendChild(botaoRemover); quantidade += 1; } return (false); } function removerInput(e) { var click = e.target; // Botão clicado // click.parentNode: é o elemento mais próximo em que ele está no caso "#novos_inpus" // previousElementSibling: é o elemento anterior mais próximo dele no caso o "input" click.parentNode.removeChild(click.previousElementSibling); click.parentNode.removeChild(click); quantidade -= 1; return (false); } </script>
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.