Ir para conteúdo
  • ×   Você colou conteúdo com formatação.   Remover formatação

      Only 75 emoji are allowed.

    ×   Your link has been automatically embedded.   Display as a link instead

    ×   Your previous content has been restored.   Clear editor

    ×   You cannot paste images directly. Upload or insert images from URL.

  • Conteúdo Similar

    • Por mm_edilson
      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>  
    • Por Luiz Henrique
      Olá,
       
      Preciso fazer uma inserção no DB de registros referente a pagamentos, quando for no crédito será realizado o insert com sua respectiva data de compensação e valor da parcela exemplo:
       3 parcelas de 100.00 e cada registro em seu devido mês:
      INSERT INTO tabela (valor, data) VALUES (100, 2022-08-17),(100, 2022-09-17),(100, 2022-10-17) É mais eficiente fazer da forma acima ou colocar 3 INSERT?
      Ou existe forma melhor de fazer isso?
       
      Obrigado.,
       
    • Por mm_edilson
      Boa tarde, amigos. Estou criando um sistema de login com PHP e PDO, mas não consigo achar um erro. Ao abrir a página de cadastro, retorna "esta página não está funcionando". Já vasculhei o código de cima a baixo várias vezes, e não consigo encontrar o erro. Se puderem ajudar, fico muito grato.
       
      Minha página de cadastro:
      <?php require_once 'classes/usuarios.php'; $u = new Usuario; ?> <htm lang="pt-br"> <head> <meta charset="utf-8"> <title>SGI - CADASTRO DE USUÁRIO</title> <link rel="stylesheet" href="css/stilo.css"> <body> <div id="corpo-form"> <h1>SGI - LOGIN</h1> <form method="POST"> <input type="text" name="nome" placeholder="Nome Completo" maxlengtht="75"> <input type="email" name="email" placeholder="Usuário" maxlength="50"> <input type="password" name="senha" placeholder="Senha" maxlength="12"> <input type="password" name="confsenha" placeholder="Confirmar Senha" maxlength="12"> <input type="submit" value="INSERIR"> </form> </div> <?php if(isset($_POST['nome'])) { $nome = addslashes($_POST['nome']); $email = addslashes($_POST['email']); $senha = addslashes($_POST['senha']); $confsenha = addslashes($_POST['confsenha']); if(!empty($nome) && !empty($email) && !empty($senha) && !empty($confsenha)) { $u->conectar("****","localhost","***","***"); if($u->msgErro == "") { if($senha == $confsenha){ if($u->cadastrar($nome,$email,$senha)) { echo "Cadastro realizado com sucesso!"; } else { echo "Email já cadastrado no sistema!"; } } else { echo "Senhas digitadas não correspondem."; } } else { echo "Erro:" .$u->msgErro; } } else { echo "Por favor, preencha todos os campos."; } } ?> </body> </head> </html>  
      E aqui a classe usuários
       
      <?php Class Usuario { private $pdo; public $msgErro = ""; public function conectar($nome, $host, $usuario, $senha) { global $pdo; try { $pdo = new PDO("mysql:dbname=".$nome.";host=.$host,$usuario,$senha); } catch (PDOException $e) { $msgErro = $e->getMessage(); } public function cadastrar($nome, $email, $senha, $situacoe_id, $niveis_acesso_id, $created, $modified) { global $pdo; $sql = $pdo->prepare("SELECT id FROM usuarios WHERE email = :e"); $sqk->bindValue(":e",$email); $sql->execute(); if($sql->rowCount() > 0) { return false; } else { $sql = $pdo->prepare("INSERT TO usuarios ($nome, $email, $senha, $situacoe_id, $niveis_acesso_id, $created, $modified) VALUES(:n, :e, :p, :s, :n, :c, :m)"); $sqk->bindValue(":n",$nome); $sqk->bindValue(":e",$email); $sqk->bindValue(":p",md5($senha)); $sqk->bindValue(":s",$situacoe_id); $sqk->bindValue(":n",$niveis_acesso_id); $sqk->bindValue(":c",$created); $sqk->bindValue(":m",$modified); $sql->execute(); return true; } } public function logar($email, $senha) { global $pdo; $sql = $pdo->prepare("SELECT id FROM usuarios WHERE email = :e AND senha = :p"); $sql->bindValue(":e",$email); $sql->bindValue(":p"md5($senha)); $sql->execute(); if($sql->rowCont() > 0) { $dado = $sql->fetch(); session_start(); $_SESSION['id'] = $dado['id']; return true; } else { return false; } } } ?>  
      Se alguém puder ajudar, e conseguir identificar onde está o erro, fico muito, muito agradecido. Abraços
       
       
       
    • Por Marcones Borges
      Olá, estou precisando de uma ajuda...
       
      Tenho duas tabelas
      ministros
      entradas
       
      Preciso exibir a lista dos ministros que não contam no relatório gerado em entradas.
       
      Fiz assim a combinação.
       

      $sql = "SELECT ministro.id, ministro.area, entrada.beneficiario, entrada.id_benificiario, entrada.id_benificiario, entrada.tipo_lancamento FROM ministro INNER JOIN entrada ON ministro.id = entrada.id_benificiario WHERE ministro.area = entrada.area_beneficiario AND ministro.nome = entrada.beneficiario AND entrada.id_benificiario='[{$id_exer}' AND entrada.tipo_lancamento='ministro'  "; $stm = $conexao->prepare($sql); $stm->execute(); $clientes = $stm->fetchAll(PDO::FETCH_OBJ);
       
      Fiz as combinações direitinho mais não consigui exbir os que estão na tabela ministro e não estão na tabela entrada.
    • Por Marcones Borges
      Olá, sou iniciante em php, estou tentando migrar um código de php 5.6 para pdo mais da erro, não roda....
      Alguém pode me ajudar?

      include '../Connections/functions.php';           function montaSelect()         {  $sql = "SELECT * FROM membros"; $result = $con->query($sql); if ($result->num_rows > 0 )  {   while($dados = $result->fetch_assoc())   {   $opt .= '<option value="'.$dados['id'].'">'.$dados['nome'].'</option>';   } } else {           $opt = '<option value="0">Nenhum Membro cadastrado</option>';     return $opt; }         }
       
      Este era o código original:
       

      // require 'topof.php'; // echo $usuario;         /**          * função que retorna o select          */         function montaSelect()         {                 $sql = "SELECT id, nome FROM membros '";                 $query = mysql_query( $sql );                 if( mysql_num_rows( $query ) > 0 )                 {                         while( $dados = mysql_fetch_assoc( $query ) )                         {                                 $opt .= '<option value="'.$dados['id'].'">'.$dados['nome'].'</option>';                         }                 }                 else                         $opt = '<option value="0">Nenhum Membro cadastrado</option>';                 return $opt;         }
×

Informação importante

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