Ir para conteúdo

Pesquisar na Comunidade

Mostrando resultados para as tags ''php''.

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Todas as áreas do Fórum

  • Q&A Desenvolvimento
    • Perguntas e respostas rápidas
  • Desenvolvimento Web
    • Desenvolvimento frontend
    • Javascript
    • PHP
    • Ruby
    • Python
    • Java
    • .NET
    • Docker, Kubernets e outros ambientes
    • Desenvolvimento com Wordpress
    • Desenvolvimento de apps
    • Desenvolvimento ágil
    • Desenvolvimento de Games
    • Banco de Dados
    • Design e UX
    • Algoritmos & Outras Tecnologias
  • Entretenimento e uso pessoal
    • Segurança & Malwares
    • Geral
    • Boteco iMasters

Encontrar resultados em...

Encontrar resultados que...


Data de Criação

  • Início

    FIM


Data de Atualização

  • Início

    FIM


Filtrar pelo número de...

Data de Registro

  • Início

    FIM


Grupo


Google+


Hangouts


Skype


Twitter


deviantART


Github


Flickr


LinkedIn


Pinterest


Facebook


Site Pessoal


Localização


Interesses

Encontrado 1793 registros

  1. Caio Vargas

    Assinatura

    Olá pessoal tudo bem? Gostaria de tirar uma dúvida estou criando um sistema de assinatura porém agora fiquei meio travado na parte de recorrência .. tipo quando a pessoa faz a assinatura de primeiro momento gero a cobrança na tela via pix ... Pagando ativo a assinatura ... Porém no mês seguinte como posso fazer essa cobrança via pix novamente
  2. Olá pessoal, tenho uma div a qual através de um select categorias eu trago dados de empresas do banco, aí preciso clicar nas listagens das empresas e pegar o ID quando clica no checkbox e gravar pelo ajax novamente na session feita no arquivo php tipo um carrinho de compras, que essa parte já tenho... só não to conseguindo pegar os ids gerados dinamicamente no retorno feito do ajax, eles aparecem com F12 ao inspecionar, mas não aceita eu clicar para pegar o ID, acho que é algo de DOM, mas não to sabendo fazer... alguém aí saberia me ajudar como pegar esses ids ao clicar, já que eles vem dinamicamente? obrigado
  3. Olá pessoal Tenho uma tabela no banco de dados chamada palavras com várias palavras cadastrada. E uma varialvel $frases. Como eu faço para saber se todas as palavras desta frase está cadastrada no banco de dados?
  4. Olá pessoal, boa tarde Tenho um banco de dados as seguintes tabelas: Verbos Plural Frases Palavras 01 -Na tabela palavras eu irei escolher uma palavra. Preciso que o php liste frases da tabela frases que contenham esta palavra. 2 - Na tabela verbos irá conter variações dessa palavra caso ela seja um verbo. Por exemplo: a palavra fazer ela é um verbo. Sendo assim ela terá variações como: fiz, farei, faria, etc. Para organizar isso eu criei na tabela verbos os seguintes campo id, palavra_id e palavra. Onde palavra_id é o id da palavra fazer. Segui este mesmo padrão para a tabela plural. 3 - Eu preciso que ele liste frases com a palavra e com suas variantes. Por exemplo: na frase " Eu vou fazer café" ele iria listar pois contém a palavra fazer. Porém se houver no banco de dados a frase "Eu fiz cafe" ele também tem que listar pois fiz é uma variante de fazer. 4 - Após fazer essa listagem eu preciso que ele coloque em negrito as palavras que nao existem no banco de dados. Por exemplo se em todo o banco de dados a palavra café nao existir ele precisa colocar esta palavra em negrito. Alguém poderia me ajudar por favor?
  5. ROGERIO MOREIRA

    Numeração de página dentro de cabeçalho <hread> table

    Olá feras Alguém sabe se é possível criar numeração de página automática para relatórios dentro do cabeçalho <hread> de uma tabela? ou alguma outra forma de criar cabeçalho para relatorios
  6. landerbadi

    Fazer colsulta em 2 ou mais tabelas ao mesmo tempo

    Olá pessoal Estou fazendo um projeto para um docionario porém estou com o seguinte problema: Tenhos as seguintes tabelas mysql: Verbos Substantivos Adjetivos Frases Na tabela frases existem milhares de frases cadastradas. Preciso fazer com que o php exiba uma frase da tabela frases em que todas as palavras desta frase exista cadastrada nas tabelas verbos, substantivos e adjetivo. Se caso alguma palavra da ftase não estiver cadastrada ela não pode set exibida. Alguém sabe como fazer isso?
  7. Caio Vargas

    Sistema de Assinatura

    Ola pessoa tudo tranquilo ! Gostaria de tirar uma duvida com vcs e o primeiro sistema de assinatura que faço então tenho algumas duvidas criei duas tabelas para receber os dados da assintrua e uma outra tabela para os pagamentos onde cada tabela tem o id do usuario e os dados necessarios estou trabalhando com o meio de pagamento ASAAS na opçao pix e percebi que o ASAAS oferece assinatura a duvida e eu preciso criar uma assinatura no asaas apos o cadastro ou a ASSINATURA fica so por conta do meu sistema e o pagamento por conta do asaas
  8. Willian Simione

    Gravar Dados do Arrays

    Boa Noite, alguem poderia me ajudar em uma situação, estou tetnando gravar os dados da tela abaixo, porem nao estou conseguindo montar o jeito certo pra ele gravar todos os dados de uma vez
  9. vicente386

    UPDATE com PHP e MYSQL com loop

    Ola. Tenho uma tabela no 3 campos que sao "LIVRO, POS, PAGINA" ao qual a logica e a seguinte: cada livro tem 100 paginas cada pagina tem 30 posiçoes tenho 8,364 registros pra inserir chegando a 100 paginas com 30 posiçoes cada passa para o livro 2 e como fazer o update na tabela inserindo nos campos LIVRO = 1, POS de 0 a 30 e PAGINA 1 para cada 30 registros logos apos pagina 2 ? estou tentando fazer assim: <?php > ini_set('max_execution_time', 2000); $pdo = new > DO(DB_SERVER.":host=".DB_HOST.";dbname=".DB_BASE,DB_USER,DB_PASSWORD); > $sql = $pdo->prepare("SELECT count(*) FROM tabela2018"); > $sql->execute(); > $livro = 1; > foreach($sql as $obj){ > $variavel = $obj[0]; > ceil((float)$variavel/100); > $qtdlaco = ceil((float)$variavel/100); > for ($id = 1; $id <= 35; $id++) { > for($L=1; $L < $qtdlaco; $L++) { > for ($P = 0; $P <= 30; $P++) { > $sql = $pdo->prepare("UPDATE tabela2018 SET LIVRO = :LIVRO, POS = :POS, PAGINA = :PAGINA WHERE idtabela2018 = $id"); > $sql->bindValue(':LIVRO', $livro); > $sql->bindValue(':POS', $P); > $sql->bindValue(':PAGINA', $L); > $sql->execute(); > } > } > } >} ?> mas na tebela so aparece: LIVRO POS PAGINA 1 30 83 1 30 83 1 30 83 e nao como deveria : LIVRO POS PAGINA 1 0 1 1 1 1 1 2 1
  10. Caio Vargas

    Webhook asaas

    Olá pessoal TD bem estou criando um sistema d assinatura com o meio de pagamento asaas porém eu não consigo testar o webhook local ultilizei o ngrok mais não funcionou alguém sabe de alguma solução
  11. viniciusfroner

    "echo" Mensagem ERROR

    Tenho um pequeno sistema de envio, estou utilizando o "PHPMailerAutoload". Após o usuário inserir as informações e clicar em enviar a mensagem é enviada com sucesso, o único problema é que apresentado ao usuário a seguinte mensagem: if ($enviado){ echo "E-mail enviado com sucesso!"; } else { echo "Não foi possível enviar o e-mail."; echo "<b>Informações do erro:</b> " . $msg->ErrorInfo; } Acabei procurando e não achei como posso remover a mensagem "Error:"
  12. joao b silva

    erro no google-chrome ao gerar pdf com mpdf

    trbalho a alguns anos com o mpdf para gerar relatorios em pdf com php. Em alguns momentos, raros, os relatorios em pdf só abrem no mozila firebox, apresentenado msg de erro em outros navegadores como o google-chrome e edge.
  13. helkton

    Somar checkbox checked

    iai galera, tenho uma pendenga e não consigo achar nada pra suprir minha dúvida rsss seguinte.... Tenho um cardápio Online onde tenho os devidos ITENS sendo abertos em uma janela modal e nesta janela tenho os devidos ITENS EXTRAS em um checkbox que o usuario clicam e adicionam esta é minha lista de ADICIONAIS EXTRAS QUE PEGO DO BANCO DE DADOS <label style="border:0px red solid;font-size:1em;width:90%;text-align:left;padding:0px;margin-left:2em;" onclick="somar()"> <input style="height:23px;width:23px;cursor:pointer" type="checkbox" class='limited<?php echo $resultExtrasDelivery->idExtraDelivery?>' id="valorItemExtra" name="idExtraSelects[]" value="<?php echo $resultItensExtras->valorItemExtra?>" > <span style="cursor:pointer"><?php echo $resultItensExtras->nomeItemExtra?> <span style="font-size:0.7em;color:#DD2C00"> <small> <?php if($resultItensExtras->valorItemExtra == '0.00'){echo'';}else{echo '+R$ '.$resultItensExtras->valorItemExtra.'<input type="text" value="'.$resultItensExtras->valorItemExtra.'">';}?></small> </span> </span> </label> ela vem tipo assim AcréscimoTradicional - Escolha até 3 opções BACON 1,00 CALABRESA 1,00 MUSSARELA 1,00 PRESUNTO 1,00 OVO 1,00 o que quero fazer é somente somar os itens clicados pelo usuario e somar com o TOTAL DO ITEM tipo pegar o total do item tipo R$30,00 e ir somando com os acrescimos escolhidos <script> function somar() { // var valorItem = document.getElementById('valorItemExtra').value; var checkbox = document.getElementById('#valorItemExtra'); var total = 0; if(checkbox.checked == true){ total += checkbox.value; } document.getElementById('somar').innerHTML = total; } </script>
  14. ndias

    Lógica de Id Sequencial por dia, mês e hora

    Boa tarde pessoal! Preciso de ajuda para desenvolver uma lógica. Quero disparar 1 mil e-mails/dia (100 por hora - das 8hr as 18hrs) e vou usar um select limit 100 para buscar os registros no meu banco de dados. Acontece que eu não posso repetir os registros e não vou saber quais e-mails já foram enviados. Então, eu preciso pegar os 100 primeiros registros as 8hrs, depois do 101 ao 200 as 09hrs...e assim por diante Eu poderia estabelecer isso, por ex, por dia, sendo dia 21 todos os registros que começarem com 21, dia 22 todos os registros que começarem com 22, e assim por diante. O problema é que quando começar outro mês, vai repetir os registros, e eu gostaria de deixar automático até terminarem todos os registros da tabela. Alguém tem uma ideia de como eu poderia fazer isso, sem gravar os envios? Por favor! Obrigado
  15. Olá, pessoal fiz o código de uma tabela com barra e que funciona. Segue código da tabela e como funcionava e foto de como estava, porem ao incluir o css para ao passar o cursor mostrar foto de um item, coloquei como exemplo o action figure que tem na loja, pois bem. No primeiro código (1) e foto (2) mostra a tabela correta e ajustando como quero. Porem fiz implementação de um css codigo (3) e imagem (4) e ao passar o nome do produto mostra uma imagem (foto 5), esta dando conflito na tabela, a tabela desapareceu. Alguém poderia dar uma sugestão como corrigiria isso (a foto 6 seria a barra colorida)? Desde já agradeço a compreensão e ajuda de todos !
  16. rogerblower

    Query gravando dados duplicado

    Estou tentando inserir esses dados no banco mysql mas esta gravando duplicado os dados. a tabela é essa CREATE TABLE IF NOT EXISTS `atendi` ( `id_atendimento` int NOT NULL AUTO_INCREMENT, `pacie_id` int NOT NULL, `agen_id` int NOT NULL, `data_atendimento` datetime NOT NULL, `num_dente` int NOT NULL, `obs` text NOT NULL, `valor` decimal(10,2) NOT NULL, PRIMARY KEY (`id_atendimento`) ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf32; O formulario <input type="hidden" name="pacie_id" id="num_dente" value="<?php echo $pacie_id ?>"/> <input type="hidden" name="id_agen" id="num_dente" value="<?php echo $id_agen ?>"/> <label>Nome: </label> <input type="text" name="num_dente[]" id="num_dente"/> <label>Obs: </label> <input type="text" name="obs[]" id="obs" placeholder="Obs" /> <label>Valor </label> <input type="text" name="valor[]" id="valor" placeholder="R$" /> <button type="button" onclick="adicionarCampo()"> + </button> </div> </div> <div class="form-group"> <input type="submit" value="Cadastrar" name="Salvar" /> </div> </form> <script src="js/custom.js"></script> A consulta $pacie_id = $_GET['pacie_id']; $agen_id = $_GET['id_agen']; $dados = filter_input_array(INPUT_POST, FILTER_DEFAULT); if(!empty($dados['CadUsuario'])){ foreach($dados['num_dente'] as $chave => $num_dente){ $query_usuario = "INSERT INTO atendimento (pacie_id, agen_id, num_dente, obs, valor) VALUE (:pacie_id, :agen_id, :num_dente, :obs, :valor)"; $cad_usuario = $pdo->prepare($query_usuario); $cad_usuario->bindParam(':pacie_id', $pacie_id); $cad_usuario->bindParam(':agen_id', $agen_id); $cad_usuario->bindParam(':num_dente', $dados['num_dente'][$chave]); $cad_usuario->bindParam(':obs', $dados['obs'][$chave]); $cad_usuario->bindParam(':valor', $dados['valor'][$chave]); $cad_usuario->execute(); E esse é o javascript do arquivo custom.js que clicando no "+" ele adiciona mais um campo var controleCampo = 1; function adicionarCampo() { controleCampo++; //console.log(controleCampo); document.getElementById('formulario').insertAdjacentHTML('beforeend', ' <div class="form-group" id="campo' + controleCampo + '"> <label></label><input type="hidden" name="pacie_id" id="num_dente" value="<?php echo $pacie_id ?>"/> <label></label><input type="hidden" name="agen_id" id="num_dente" value="<?php echo $agen_id ?>"/> <label class="form-label">&nbsp;Dente:&nbsp;</label><input type="text" class="formcodac-text-input-dente" name="num_dente[]" id="num_dente" placeholder="Nº Dente" /> <label class="form-label">&nbsp;Obs:&nbsp;</label><input type="text" class="formcodac-text-input-obs" name="obs[]" id="obs" placeholder="Observações required "/> <label class="form-label">&nbsp;Valor:&nbsp;</label><input type="text" class="formcodac-text-input-valor" name="valor[]" id="valor" placeholder="Valor required "/> &nbsp;<button class="btn btn-danger" type="button" id="' + controleCampo + '" onclick="removerCampo(' + controleCampo + ')"> X </button></div>'); } function removerCampo(idCampo){ //console.log("Campo remover: " + idCampo); document.getElementById('campo' + idCampo).remove(); } Faz alguns dias que estou quebrando a cabeça e não consigo resolver... Frank editei o post, tinha colocado o arquivo que estava testando, foi mal, se precisar de mais alguma coisa avise, obrigado
  17. rogerblower

    Consulta com CURTIME não estou conseguindo

    Pessoal tenho os campos, data_inicio, hora_inicio e hora_final Nos dados que estão na tela preciso que a permaneça por mais 5 minutos hora_final + 05 WHERE data_inicio = CURDATE() AND hora_final + 05 ORDER BY hora_inicio ASC"); Não estou conseguindo o resultado desejado alguém pode ajudar?
  18. Jack Oliveira

    Paginação

    Ola pessoal preciso desenvolver uma páginacao conforme vai rolando a página Exemplo mostrar 20 itens por páginas conforme vai rolando a pagina ela vai abrindo sem precisar clicar e ao voltar ela vai fechando as páginas que esta aberta ate chegar o limite de 20 de novo..
  19. Elisame Araújo

    Atualizar Várias Linhas dentro de Um Loop

    Seguinte, Eu tenho uma página de atualização de lista de faixas que estão agrupados por álbum, com os dados vindo através de parâmetros na url como o albumID e detalhes e são retornados dentro de um while. O que eu queria é que ele atualizasse todos os campos que fossem editados se eles fossem modificados, mas o que o ocorre é que apenas o último registro é atualizado. O script que traz as faixas: <tr> <form class="form-group" method="post" action="includes/funcoes/atualizar-faixas.php"> <?php while($sqlSelect = mysqli_fetch_assoc($result)) { ?> <td><input type="text" value="<?php echo $sqlSelect['trackNumero'] ?>" class="form-control" name="trackNumero"></td> <td><input type="text" value="<?php echo $sqlSelect['trackTitulo'] ?>" class="form-control" name="trackTitulo"></td> <td><input type="text" value="<?php echo $sqlSelect['trackTraducao'] ?>" class="form-control" name="trackTraducao"></td> <td><input type="text" value="<?php echo $sqlSelect['trackID'] ?>" class="form-control" name="trackID" readonly></td> <td><input type="text" value="<?php echo $sqlSelect['albumID'] ?>" class="form-control" name="albumID" readonly></td> </tr> <?php } ?> <tr><a href="albuns-lista.php"><button name="cancelar" id="cancelar" class="btn btn-danger mb-3 mr-1" type="button"> <i class="fa-solid fa-arrow-left"></i> Voltar</button></a></tr> <tr><button name="update" id="update" class="btn btn-success mb-3" type="submit" value=""><i class="fa-solid fa-arrow-up-from-bracket"></i> Atualizar</button></tr> </form> E esse é o resultado do código acima: E este é o código que uso pra fazer o UPDATE no banco de dados: <?php require_once "../db/albuns.php"; if(isset($_POST['update'])){ $trackNumero = $_POST['trackNumero']; $trackTitulo = mysqli_real_escape_string($conecta2, $_POST['trackTitulo']); $trackTraducao = $_POST['trackTraducao']; $trackID = $_POST['trackID']; $albumID = $_POST['albumID']; $sqlUpdate = "UPDATE `faixas` SET `trackTitulo` = '$trackTitulo', `trackNumero` = '$trackNumero', `trackTraducao` = '$trackTraducao' WHERE `albumID` = $albumID AND `trackID` = $trackID"; if($atualizaDados = mysqli_query($conecta2, $sqlUpdate) == true){ var_dump($sqlUpdate); //header("location: ../../albuns.php?update=sucesso"); } else { //header("location: ../../albuns.php?update=erro"); } } ?> Como eu faria para que cada linha fosse atualizada individualmente? Já tentei diversos métodos, mas o resultado continua sendo a atualização apenas do último registro no banco, ignorando o restante das atualizações.
  20. mateus.andriollo

    Tarefas agendadas

    Procuro um componente, ferramenta... Que me ajude de forma organizada a executar tarefas agendadas sob demanda. Achei o cron-tab mas teria q gerar isso manualmente ou criar um script em php para a executar a cada 30 seg, 1min, 1hora... Alguém já viu sobre Ecotone, pelo q vi é bem parecido com cron-tab mas gerido pelo php e com retornos de execução, principalmente quando há falhas de execução. Poderiam sugerir algo?
  21. joao b silva

    passando dados do banco de dados para uma modal

    em uma tabela html cri o link a seguir <a href="#" class="btn btn-info rounded-pill mt-2" data-toggle="modal" data-target="#myEdita" data-veCodigo="<?php echo $id ?>" data-veNome="amaria das dores" data-veComissao="<?php echo $veCOMISSAO ?>" title="Editar..."></a> no codigo a seguir crio uma modal: <!--MODAL EDITA--> <div class="modal fade bd-example-modal-lg" tabindex="-1" role="dialog" aria-hidden="true" id="myEdita"> <div class="modal-dialog modal-lg"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title">Modal title</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">&times;</span> </button> </div> <div class="modal-body"> <p>Modal body text goes here.</p> <form> <div class="row"> <div class="form-group col-md-6"> <label for="fname">First Name:</label> <input type="text" class="form-control" id="ednome" placeholder="First Name"> </div> </div> </form> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> <button type="button" class="btn btn-primary">Save changes</button> </div> </div> </div> </div> a seguir vem o codigo javascript que pega os dados passados no link e passa para o input que está na modal: $('#myEdita').on('show.bs.modal', function (event) { var button = $(event.relatedTarget) // Button that triggered the modal var vNom = button.data('veNome') // Extract info from data-* attributes alert(vNom) // If necessary, you could initiate an AJAX request here (and then do the updating in a callback). // Update the modal's content. We'll use jQuery here, but you could use a data binding library or other methods instead. var modal = $(this) modal.find('.modal-title').text('Editando dados do vendedor '+vNom) modal.find('#ednome').val(vNom) }) o problema é que o valor passado na variavel do link (veNome) não está vindo para o javascript. esse alert que coloquei ai apresenta a mensagem undefined
  22. Quero desenvolver um site semelhante a esse: https://www.catalogosofertas.com.br/ No qual eles enviam diversas ofertas e encartes recentes de lojas em geral e supermercados. Eles possuem muito conteúdo que são atualizados frequentemente, no entanto, muitos dos supermercados, por exemplo, não possuem os folhetos de cada cidade em seus sites. De modo que pudesse criar um scraper pra ficar acompanhando as atualizações. Ao mesmo tempo não imagino que eles tenha muitos funcionários fazendo isso, pois são muitas lojas e supermercados que o encarte vence em alguns dias. Oq me faz pensar que manualmente é inviável manter as atualizações. Queria saber de vocês, que tem experiência com a área ou mesmo que já tenham trabalhado em projetos semelhantes, como posso me organizar para fazer isso acontecer assim como no site de exemplo: https://www.catalogosofertas.com.br/ Como posso fazer isso ? Realmente teria q ficar criando diversos scraper e códigos pra ficar acompanhando os encartes de cada loja e supermercado? Qual dica, sugestão , orientação poderá me ser muito útil, pois estou confuso sobre como fazer isso acontecer.
  23. ao criar a funcao javascript eu pego o valor de um input (produto) e passo pra uma variavel javascript. dentro do java script eu inicio uma sessao php e preciso passar o valor da variavel javascript para uma variavel php. Resumindo: como podem ver no codigo abixo eu preciso fazer a variavel php vProduto ter o mesmo conteúdo que a variavel javascript vCodPro function ValorItem() { var vCodPro = parseFloat(document.getElementById('produto').value); <?php $vProduto = "document.write(vCodPro)"; var_dump(vProduto); document.getElementById('idpro').value = $Par = "EM={$_SESSION['userlogin']['emCODIGO']}"; $Fil = " where emCODIGO = :EM"; ?> }
  24. Mauricio Molina

    Inserir dados formulario no BD

    Ola, estou tendo problemas com o cadastro de dados de um formulário no BD, ele gera o ID (auto increment), mas não insere os dados vindo do formulário no banco de dados. Ja estou tão cego que não estou conseguindo achar o erro, alguém pode me dar uma força? HTML <form method="POST" action="proc_cad_faq.php" enctype="multipart/form-data"> <div class="form-group"> <label for="pergunta">Pergunta</label> <input name="pergunta" type="text" class="form-control" id="pergunta" placeholder="Digite a Pergunta"> </div> <div class="form-group"> <label for="resposta">Resposta</label> <textarea name="resposta" class="form-control" id="resposta" rows="3" placeholder="Digite uma Resposta"></textarea> </div> <div class="form-group"> <div class="custom-control custom-checkbox"> <input name="status" type="checkbox" class="custom-control-input" id="ativo" value="ativo"> <label class="custom-control-label" for="ativo">Ativo</label> </div> </div> <button type="submit" class="btn btn-primary">CADASTRAR</button> </form> PHP - 7.4 <?php session_start(); include_once("../conexao/conexao.php"); $pergunta = filter_input(INPUT_POST, 'pergunta', FILTER_SANITIZE_STRING); $resposta = filter_input(INPUT_POST, 'resposta', FILTER_SANITIZE_STRING); $status = filter_input(INPUT_POST, 'status', FILTER_SANITIZE_STRING); $result_faq = "INSERT INTO faq (pergunta, resposta, status, created) VALUES ('$pergunta', '$resposta', '$status', NOW())"; $resultado_faq = mysqli_query($conn, $result_faq); if(mysqli_insert_id($conn)){ $_SESSION['msg_cad_faq'] = "<script> Swal.fire({ icon: 'success', title: 'SUCESSO!', text: 'FAQ cadastrada com sucesso!', showConfirmButton: true, }) </script>"; header("Location: cadastrar_faq.php"); }else{ $_SESSION['msg_cad_faq'] = "<script> Swal.fire({ icon: 'error', title: 'ERRO!', text: 'FAQ não cadastrada, tente novamente!' }) }); }); </script>"; header("Location: cadastrar_faq.php"); }
  25. Colegas, boa tarde. Estou criando um sisteminha de login, e estou na parte de recuperação de senha. Escrevi o código para o usuário digitar o e-mail cadastrado e solicitar a redefinição. Então, ele recebe um link único no e-mail dele e, por meio desse link, abre a página de criar nova senha. Tudo funciona. O cadastro, o login, e a alteração de senha. Exceto por um problema. Quando faço uma recuperação de senha, e retorno para a página de login, ele dá a nova senha como inválida. Aí, se eu fechar o navegador e abrir de novo, e digitar a nova senha, ele entra normalmente. E não funciona ctrl+F5. Tem que fechar e abrir. Não faço ideia do que pode estar causando isso. Vou postar meu código: Página de Login: <?php include_once 'connect.php'; ?> <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8"> <meta name="viewport" content-"width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Login</title> <style> body{font-family: Arial, Helvetica, sans-serif} .content{display:flex;justify-content: center} .contato{width:100%; max-width: 500px;} .form{display: flex; flex-direction: column} .field{padding:10px; margin-bottom:15px; border:1px solid #DDD; border-radius: 5px; font-family: Arial, Helvetica, sans-serif; font-size: 16px} .field2{padding:10px; margin-bottom:15px; border:1px solid #ADD8E6; background-color:#ADD8E6; border-radius: 5px; font-family: Arial, Helvetica, sans-serif; font-size: 16px} .field2:hover{padding:10px; margin-bottom:15px; border:1px solid #87CEFA; background-color:#87CEFA; border-radius: 5px; font-family: Arial, Helvetica, sans-serif; font-size: 16px; font-weight:bold;} </style> </head> <body> <section class="content"> <div class="contato"> <h2>Login</h2> Por favor, entre com o e-mail e a senha cadastrados.<br><br> <form name="cad_usu" class="form" method=post> <input class="field" type="email" name="email" placeholder="E-mail" required> <input class="field" type="password" name="senha" placeholder="Senha" required> <input class="field2" type="submit" name="SendLogin" value="Entrar no Sistema"> <input class="field2" type="reset" value="Limpar Formulário"> <center><a href="recuperar_senha.php"><font size="2">Esqueci a senha</font></a></center> </form> </div> </section> <?php if(!isset($_POST['SendLogin'])){exit;} $dados = filter_input_array(INPUT_POST,FILTER_DEFAULT); $query_usuario = "SELECT * FROM usuario WHERE email =:email LIMIT 1"; $result_usuario = $conn->prepare($query_usuario); $result_usuario->bindParam(':email', $dados['email']); $result_usuario->execute(); $row_usuario = $result_usuario->fetch(PDO::FETCH_ASSOC); if($row_usuario && (password_verify($dados['senha'], $row_usuario['senha']))) { $_SESSION['id'] = $row_usuario['id']; $_SESSION['nome'] = $row_usuario['nome']; $_SESSION['situacoe_id'] = $row_usuario['situacoe_id']; $_SESSION['niveis_acesso_id'] = $row_usuario['niveis_acesso_id']; header("Location: painel.php");} else { echo "<div class=content><p style='color: red'> Erro: Usuário e/ou senha inválidos!</p>";} ?> </body> </html> Página que faz a alteração da Senha: <?php include_once 'connect.php'; ?> <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8"> <meta name="viewport" content-"width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Recuperação de Senha</title> <style> body{font-family: Arial, Helvetica, sans-serif} .content{display:flex;justify-content: center} .contato{width:100%; max-width: 500px;} .form{display: flex; flex-direction: column} .field{padding:10px; margin-bottom:15px; border:1px solid #DDD; border-radius: 5px; font-family: Arial, Helvetica, sans-serif; font-size: 16px} .field2{padding:10px; margin-bottom:15px; border:1px solid #ADD8E6; background-color:#ADD8E6; border-radius: 5px; font-family: Arial, Helvetica, sans-serif; font-size: 16px} .field2:hover{padding:10px; margin-bottom:15px; border:1px solid #87CEFA; background-color:#87CEFA; border-radius: 5px; font-family: Arial, Helvetica, sans-serif; font-size: 16px; font-weight:bold;} </style> <script> function confereSenha(){ const senha = document.querySelector('input[name=senha]'); const confirma_senha = document.querySelector('input[name=confirma_senha'); if (confirma_senha.value === senha.value) { confirma_senha.setCustomValidity(''); } else { confirma_senha.setCustomValidity('As senhas digitadas não conferem! Elas precisam ser iguais.'); } } </script> </head> <body> <section class="content"> <div class="contato"> <center><h2>Recuperação de Senha</h2></center> <br><br> <?php $user = $_GET['utilizador']; $hash = $_GET['confirmacao']; $query_recupera = "SELECT * FROM recuperacao"; $result_recupera = $conn->prepare($query_recupera); $result_recupera->execute(); $row_recupera = $result_recupera->fetch(PDO::FETCH_ASSOC); $user_cadastrado = $row_recupera['email_usu']; $hash_cadastrado = $row_recupera['confirmacao']; $query_usuario = "SELECT * FROM usuario WHERE email = '$user'"; $result_usuario = $conn->prepare($query_usuario); $result_usuario->execute(); $row_usuario = $result_usuario->fetch(PDO::FETCH_ASSOC); $id_user = $row_usuario['id']; $modified = date('Y-m-d H:i:s'); echo $id_user; if(!empty($_POST)){ if($user == $user_cadastrado && $hash == $hash_cadastrado){ $dados = filter_input_array(INPUT_POST, FILTER_DEFAULT); $sql = "UPDATE usuario SET senha =:senha, modified =:modified WHERE id =:id"; $statement = $conn->prepare($sql); $statement->bindParam(':senha', password_hash($dados['senha'], PASSWORD_DEFAULT)); $statement->bindParam(':modified', $modified); $statement->bindParam(':id', $id_user); if($statement->execute()){ echo "<p style='color: green;'>Senha alterada com sucesso!</p>"; echo "<p><a href='login.php'>Voltar ao Login></a></p>"; } else { echo "<p style='color: red;'>Erro! Não foi possível alterar sua senha. Por favor, entre em contato com o administrador do sistema.</p>"; } } else { echo "<p style='color: red;'>Erro! Não foi possível alterar sua senha. Por favor, entre em contato com o administrador do sistema.</p>"; } } else { echo ""; } ?> <form name="cad_usu" class="form" method="POST" action=""> <input class="field" type="password" name="senha" placeholder="Senha" required onchange='confereSenha();'> <input class="field" type="password" name="confirma_senha" placeholder="Confirmar Senha" required onchange='confereSenha();'> <input class="field2" type="submit" name="AlteraSenha" value="Alterar Senha"> <input class="field2" type="reset" value="Limpar Formulário"> </form> </div> </section> </div> </body> </html> E por fim, a página que solicita a alteração da senha: <?php include_once 'connect.php'; ?> <html> <meta charset="UTF-8"> <meta name="viewport" content-"width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Login</title> <style> body{font-family: Arial, Helvetica, sans-serif} .content{display:flex;justify-content: center} .contato{width:100%; max-width: 500px;} .form{display: flex; flex-direction: column} .field{padding:10px; margin-bottom:15px; border:1px solid #DDD; border-radius: 5px; font-family: Arial, Helvetica, sans-serif; font-size: 16px} .field2{padding:10px; margin-bottom:15px; border:1px solid #ADD8E6; background-color:#ADD8E6; border-radius: 5px; font-family: Arial, Helvetica, sans-serif; font-size: 16px} .field2:hover{padding:10px; margin-bottom:15px; border:1px solid #87CEFA; background-color:#87CEFA; border-radius: 5px; font-family: Arial, Helvetica, sans-serif; font-size: 16px; font-weight:bold;} </style> </head> <body> <section class="content"> <div class="contato"> <h2>Recuperação de Senha</h2> Por favor, digite o e-mail cadastrado.<br><br> <form name="cad_usu" class="form" method=post> <input class="field" type="email" name="email_usu" placeholder="E-mail" required> <input class="field2" type="submit" name="Recuperar" value="Recuperar Senha"> <center><a href="login.php"><font size="2">Voltar ao Login</font></a></center> </form> </div> </section> <?php if(!isset($_POST['Recuperar'])){exit;} $dados = filter_input_array(INPUT_POST,FILTER_DEFAULT); $query_usuario = "SELECT email FROM usuario WHERE email =:email LIMIT 1"; $result_usuario = $conn->prepare($query_usuario); $result_usuario->bindParam(':email', $dados['email_usu']); $result_usuario->execute(); $row_usuario = $result_usuario->fetch(PDO::FETCH_ASSOC); if($row_usuario) { //se o e-mail for localizado, acontece isso: //gera a chave de confirmação $utilizador = $dados['email_usu']; $chave = sha1(uniqid( mt_rand(), true)); //salva a chave no banco de dados $query_salva_usu = "INSERT INTO recuperacao (email_usu, confirmacao) VALUES (:email_usu, :confirmacao)"; $salva_usu = $conn->prepare($query_salva_usu); $salva_usu->bindParam(':email_usu', $dados['email_usu'], PDO::PARAM_STR); $salva_usu->bindParam(':confirmacao', $chave, PDO::PARAM_STR); $salva_usu->execute(); if($salva_usu->rowCount()){ $link = "http://www.sgi.dev.br/recuperar.php?utilizador=$utilizador&confirmacao=$chave"; if(mail($utilizador, 'Recuperação de Senha', 'Olá, '.$utilizador.'. Recebemos uma solicitação de recuperação de senha do site SGI - Sistema de Gestão de Igrejas. Se foi você, por favor, clique no link a seguir e crie uma nova senha: '.$link.' Se você não se lembra de ter solicitado essa alteração, por favor, desconsidere este e-mail. ')) echo "<center><p style='color: green;'>Um link de confirmação foi enviado para '.$utilizador.'. <br>Por favor, abra-o e confirme sua solicitação. Se não o encontrar na caixa de entrada, gentileza verificar a caixa de spam.</center></p>"; }else{ echo "<p style='color: #ff0000;'>Erro. Não foi possível recuperar a senha. Entre em contato com o administrador do sistema!</p>"; } } else { //se o e-mail não for localizado, acontece isso: echo "<div class=content><p style='color: red'> Erro: email não encontrado!</p>"; } ?> </body> </html>
×

Informação importante

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