Ir para conteúdo
Fórum Script Brasil

mm_edilson

Membros
  • Total de itens

    20
  • Registro em

  • Última visita

Sobre mm_edilson

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

mm_edilson's Achievements

0

Reputação

  1. Fiz exatamente do jeito que você sugeriu, mas também não funcionou. Acho que o problema é com o wampserver.
  2. Amigos, meu login funciona, lê o banco de dados, confere, gera a session, mas quando direciona para a página "painel" que é a página do usuário logado, o session não vem junto. A página não lê. Já fiz de tudo, tudo enquanto é teste, e nada. Estou usando o wampserver e fazendo tudo no computador local. O php da página login: <?php session_start(); require_once 'connect.php'; $message = ''; if ($_SERVER['REQUEST_METHOD'] == 'POST') { $email = $_POST['email']; $password = $_POST['senha']; // Verificar se o e-mail já está cadastrado $query = "SELECT * FROM usuarios WHERE email = ?"; $stmt = $pdo->prepare($query); $stmt->execute([$email]); $user = $stmt->fetch(); if ($user && password_verify($password, $user['senha'])) { // Login bem sucedido $_SESSION['user_id'] = $user['id']; $_SESSION['user_name'] = $user['nome']; $_SESSION['access_level'] = $user['acesso_nivel']; header('Location: painel.php'); exit(); } else { $message = 'Erro! E-mail ou senha inválidos.'; } } ?> E o php da página painel (está com trecho comentado devido aos testes) <?php session_start(); require_once 'connect.php'; echo $_SESSION['user_id'], $_SESSION['user_name'], $_SESSION['access_level']; /*if(isset($_SESSION['user_name'], $_SESSION['access_level']) && !empty($_SESSION['user_name']) && !empty($_SESSION['access_level'])){ $nomeUsuario = $_SESSION['user_name']; $nivelAcesso = $_SESSION['access_level']; } else { // redirecionar para página de login header('Location: login.php'); exit(); }*/ ?> Alguém pode dar uma força?
  3. Tenho um formulário html com vários selects. Dois deles são usados para mostrar/ocultar duas divs respectivamente, quando a opção 8 é clicada, e esconder, quando clicar em qualquer outra opção. Tenho uma instrução javascript que mantém a opção selecionada mesmo após clicar no botão submit. Até aqui Funciona. Mas quero que, ao clicar no botão "submit" a div permaneça exibida, uma vez que a opção 8 do select permanece selecionada. Mas só funciona no primeiro caso, o segundo apaga a div ao clicar no submit. Segue o código: ... <td> <label>Faixa Etária:</label><br> <select name="fxet" id="fxet" class="fxet" onchange="mostraDiv()"> <option value="0"<?php if(isset($_POST['fxet']) && $_POST['fxet'] == '0') echo 'selected'; ?>>Todas as idades</option> <option value="1" <?php if(isset($_POST['fxet']) && $_POST['fxet'] == '1') echo 'selected'; ?>>Crianças - 0 a 8 anos</option> <option value="2" <?php if(isset($_POST['fxet']) && $_POST['fxet'] == '2') echo 'selected'; ?>>Juniores - 9 a 11 anos</option> <option value="3" <?php if(isset($_POST['fxet']) && $_POST['fxet'] == '3') echo 'selected'; ?>>Adolescentes - 12 a 17 anos</option> <option value="4" <?php if(isset($_POST['fxet']) && $_POST['fxet'] == '4') echo 'selected'; ?>>Jovens - 18 a 34 anos</option> <option value="5" <?php if(isset($_POST['fxet']) && $_POST['fxet'] == '5') echo 'selected'; ?>>Adultos - 35 a 59 anos</option> <option value="6" <?php if(isset($_POST['fxet']) && $_POST['fxet'] == '6') echo 'selected'; ?>>Idosos - 60 a 74 anos</option> <option value="7" <?php if(isset($_POST['fxet']) && $_POST['fxet'] == '7') echo 'selected'; ?>>Idosos maiores - 75 anos acima</option> <option value="8"<?php if(isset($_POST['fxet']) && $_POST['fxet'] == '8') echo 'selected'; ?>>Personalizado</option> </select>&nbsp&nbsp </td> <td> <div id="personm" style="<?php if(isset($_POST['fxet']) && $_POST['fxet'] == '8') echo 'display:block;'; else echo 'display:none;'; ?>"> <label>De:&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbspA:</label><br> <input type="number" name="ini_m" id="idadeini" min="0" max="120">&nbsp<input type="number" name="fin_m"id="idadefin" min="0" max="120"> </div> </td> <td> <div class="div_botao_pesquisa"><br><input type="submit" name="but_pesquisa_membros" id="but_pesquisa_membros" class="but_pesquisa_membros" value="Pesquisar_m"></div> </td> </tr> </table> <td> ... ... ... <label>Faixa Etária:</label><br> <select name="fxet2" id="fxet2" class="fxet2" onchange="mostraDiv2()"> <option value="0"<?php if(isset($_POST['fxet2']) && $_POST['fxet2'] == '0') echo 'selected'; ?>>Todas as idades</option> <option value="1"<?php if(isset($_POST['fxet2']) && $_POST['fxet2'] == '1') echo 'selected'; ?>>Crianças - 0 a 8 anos</option> <option value="2"<?php if(isset($_POST['fxet2']) && $_POST['fxet2'] == '2') echo 'selected'; ?>>Juniores - 9 a 11 anos</option> <option value="3"<?php if(isset($_POST['fxet2']) && $_POST['fxet2'] == '3') echo 'selected'; ?>>Adolescentes - 12 a 17 anos</option> <option value="4"<?php if(isset($_POST['fxet2']) && $_POST['fxet2'] == '4') echo 'selected'; ?>>Jovens - 18 a 34 anos</option> <option value="5"<?php if(isset($_POST['fxet2']) && $_POST['fxet2'] == '5') echo 'selected'; ?>>Adultos - 35 a 59 anos</option> <option value="6"<?php if(isset($_POST['fxet2']) && $_POST['fxet2'] == '6') echo 'selected'; ?>>Idosos - 60 a 74 anos</option> <option value="7"<?php if(isset($_POST['fxet2']) && $_POST['fxet2'] == '7') echo 'selected'; ?>>Idosos maiores - 75 anos acima</option> <option value="8"<?php if(isset($_POST['fxet2']) && $_POST['fxet2'] == '8') echo 'selected'; ?>>Personalizado</option> </select>&nbsp&nbsp </td> <td><div id="personm2" style="display:none"> <label>De:&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbspA:</label><br> <input type="number" name="ini_nm" id="idadeini" min="0" max="120">&nbsp<input type="number" name="fin_nm" id="idadefin" min="0" max="120"> </div></td> <td> <div class="div_botao_pesquisa"><br><input type="submit" name="but_pesquisa_nao_membros" id="but_pesquisa_nao_membros" class="but_pesquisa_nao_membros" value="Pesquisar_NM"></div> </td> </tr> </table> Eis o javascript document.getElementById("personm").style.display = "none"; document.getElementById("personm2").style.display = "none"; function mostraDiv() { if (document.getElementById("fxet").value == "8") { document.getElementById("personm").style.display = "block"; } else { document.getElementById("personm").style.display = "none"; } } document.getElementById("but_pesquisa_membros").addEventListener("click", function() { if (document.getElementById("fxet").value == "8") { document.getElementById("personm").style.display = "block"; } }); function mostraDiv2() { if (document.getElementById("fxet2").value == "8") { document.getElementById("personm2").style.display = "block"; } else { document.getElementById("personm2").style.display = "none"; } } document.getElementById("but_pesquisa_nao_membros").addEventListener("click", function() { if (document.getElementById("fxet2").value == "8") { document.getElementById("personm2").style.display = "block"; } }); A função mostraDiv() funciona, mas a mostradiv2() não. Quando clico no botão submit, no segundo caso, a div personm2 deveria permanecer visível, mas ela some. Alguém pode dar uma força? Sei que o código tá meio gambiarrado, mas é que estou aprendendo... 🙂
  4. Amigos, tenho duas divs que precisam iniciar escondidas na página e depois exibir, a primeira ou a segunda, conforme eu clicar em um select. Ou seja, quando carrego a página, ambas as divs estão display: none. Quando clico na primeira opção em um select, a div1 é exibida. Quando clico na segunda opção no select, a primeira div1 esconde e exibe a div2. Mas não funciona. A página carrega com as divs ocultas, mas não exibe nenhuma delas quando clico em algum item no select. Fiz assim: <table> <tr> <td> <div id="tipo"><p>Tipo de pesquisa:</p> <select name="tipo"> <option value="-1" selected>Todos os registros</option> <option value="op1">Opção 1</option> <option value="op2">Apenas não membros</option> </select> </div> </td> <td> <div id="op1" class="hidden"><p>Opção 1:</p> <select name="opcao1"> <option value="sit_a" selected>Situação A</option> <option value="sit_b">Situação B</option> <option value="sit_c">Situação C</option> </select> </div> <td> <div id="op2" class="hidden"><p>Opção 2:</p> <select name="opcao2"> <option value="sit_d" selected>Situação D</option> <option value="sit_e">Situação E</option> </select> </div> </td> </tr> </table> No CSS coloquei: .hidden{ display:none; } .show{ display:block; } E no JavaScript, fiz assim: <script type="text/javascript"> var dropdown = document.getElementById("tipo"); optionPrev = "null" function onCatChange() { if ( dropdown.options[dropdown.selectedIndex].value != -1 ) { var option = dropdown.options[dropdown.selectedIndex].value; if( optionPrev != "null") { var optionHide = document.getElementById(optionPrev); optionHide.classList.toggle("show"); } var optionShow = document.getElementById(option); optionShow.classList.toggle("raiseSunshine"); optionPrev = option; } } dropdown.onchange = onCatChange; </script>
  5. O negócio é que o forum corta o código. Ultrapassa o limite de caracteres... Mas coloquei o código completo no drive, neste link: https://drive.google.com/file/d/19xGbKS8Z4CEKqiHMoWVdRY-B0dl00RUE/view?usp=share_link
  6. Amigos, quebrando a cabeça pra encontrar o erro. Tenho uma pasta "photos" para onde deve subir a imagem da logo. O arquivo php que faz o update precisa pegar a imagem de um input image, mudar o nome, criar o caminho para ela, gravar no BD, e subir a imagem para a pasta. Ele faz tudo, menos subir a imagem. Alguém poderia dar uma força? ... <input type="hidden" class="logo" name="logo" value="<?php echo $row_igreja['Logo']; ?>"> <?php $logo_igreja = $row_igreja['Logo']; $logo = $logo_igreja; ?> <input id="selecao-arquivo" type="file" name="flImage" accept="image/*"> <div class="logo" id="foto_logo" name="foto_logo"><img id="imgPhoto" src="<?php echo $logo ?>"</img> <script type="text/javascript"> foto_logo = document.getElementById('selecao-arquivo'); foto_logo.addEventListener('change', function(e) { showThumbnail(this.files);}) function showThumbnail(files) { if (files && files[0]) { reader = new FileReader(); reader.onload = function (e) { imgPhoto.src = e.target.result;} reader.readAsDataURL(files[0]);}} </script> </div> <label class="selecao-arquivo" for='selecao-arquivo'>Selecionar Imagem &#187;</label> <input class="btn_edit" type="submit" name="salvar" value="SALVAR" onclick="<?php echo $confirma_edicao?>"> <?php if(!empty($_POST)){ if (!empty($_FILES['flImage']['name'])){ $arquivo_tmp = $_FILES[ 'flImage' ][ 'tmp_name' ]; $nome_imagem = $_FILES[ 'flImage' ][ 'name' ]; $extensao = pathinfo ( $nome_imagem, PATHINFO_EXTENSION ); $extensao = strtolower ( $extensao ); strstr ( '.jpg;.jpeg;.gif;.png', $extensao ); $novoNome = "logo_igreja" . '.' . $extensao; $destino = 'photos/' . $novoNome; @move_uploaded_file( $arquivo_tmp, $destino ); $logo_atual = "http://www.sgi.dev.br/paginas/" . $destino; }else{ $logo_atual = $_POST['logo']; } $id = $_POST['id']; $nome = $_POST['nome']; $tipo = $_POST['tipo']; $end = $_POST['rua']; $nm = $_POST['numero']; $comp =$_POST['complem']; $bairro = $_POST['bairro']; $cid = $_POST['cidade']; $uf = $_POST['uf']; $cep = $_POST['cep']; $tel = $_POST['tel']; $tel2 = $_POST['tel2']; $email = $_POST['email']; $site = $_POST['site']; $razsoc = $_POST['razsoc']; $cnpj = $_POST['cnpj']; $obs = $_POST['obs']; $logo = $logo_atual; $dtorg = $_POST["dtorg"]; date_default_timezone_set('America/Sao_Paulo'); $ultimaatualiz = date('Y-m-d'); $sql = "UPDATE CadIgreja SET Nome=?,tipo=?,EnderecoRua=?,Num=?,Compl=?,Bairro=?,Cidade=?,UF=?,CEP=?,Tel=?,Tel2=?,Email=?,Site=?,RazSoc=?,CNPJ=?,Obs=?,Logo=?,DtOrg=?,UltimaAtualiz=? WHERE IdIgreja=?"; if($conn->prepare($sql)->execute([$nome,$tipo,$end,$nm,$comp,$bairro,$cid,$uf,$cep,$tel,$tel2,$email,$site,$razsoc,$cnpj,$obs,$logo,$dtorg,$ultimaatualiz,$id])){ echo '<script> alert ("Registro atualizado com sucesso!"); </script>'; } else { echo '<script> alert ("Erro! Não foi possível atualizar o registro."); location.href=("painel.php?igreja_editar")</script>'; } } else {} ?>
  7. Sim, é um parâmetro para um include dessa página na página principal. Vou tentar e posto o resultado aqui...obrigado
  8. Amigos, estou precisando exibir um alert em uma situação, e não exibir em outra. Tenho um botão, cujo link depende de uma variável: <div id="botao"><center><button class="field2"><a href="?<?php echo $link?>">Prosseguir</button></center></a></div> A variável $link vai ser "?pagina1" ou "?pagina2", de acordo com condições que escrevi anteriormente. Tá certinho, a variável funciona, o botão clica direitinho, chama a página correspondente, tudo certo. Mas eu queria que, caso o $link fosse igual a "?pagina1", antes de ir para ela, ele me mostrasse um alert: window.alert("Você será redirecionado para a página 1"); e depois fosse para a página1. Mas em caso do $link ser igual a "?pagina2", não exibir alerta, só ir para a página 2 direto. Como faço isso? Obrigado.
  9. 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 de Recuperação de 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 abre quando clico no link recebido pelo e-mail: <?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>
  10. Mas a gravação está certa. Está gravando criptografado certinho no bd. O problema é validar o login.
  11. Boa tarde, amigos. Estou criando um sisteminha simples de login. Consigo cadastrar o usuário, e tudo funciona salvando a senha crua no banco de dados. Mas quando tento usar hash para criptografar, ela salva criptografada no BD, mas na hora do login, dá senha inváilda. Alguém pode me ajudar com os códigos? Página inserir novo usuário: <?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>Cadastro de Usuário</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"> <h2>Cadastro</h2> Por favor, preencha todos os dados para criar um novo usuário.<br><br> <?php $dados = filter_input_array(INPUT_POST, FILTER_DEFAULT); if (!empty($dados['CadUsuario'])) { var_dump($dados['senha']); $query_usuario = "INSERT INTO usuario (nome, email, senha, situacoe_id, niveis_acesso_id, created, modified) VALUES (:nome, :email, :senha, :situacoe_id, :niveis_acesso_id, :created, :modified)"; $cad_usuario = $conn->prepare($query_usuario); $cad_usuario->bindParam(':nome', $dados['nome'], PDO::PARAM_STR); $cad_usuario->bindParam(':email', $dados['email'], PDO::PARAM_STR); $cad_usuario->bindParam(':senha', password_hash($dados['senha'], PASSWORD_BCRYPT,['cost=>12'])); $cad_usuario->bindParam(':situacoe_id', $dados['situacoe_id'], PDO::PARAM_STR); $cad_usuario->bindParam(':niveis_acesso_id', $dados['niveis_acesso_id'], PDO::PARAM_STR); $cad_usuario->bindParam(':created', $dados['created'], PDO::PARAM_STR); $cad_usuario->bindParam(':modified', $dados['modified'], PDO::PARAM_STR); $cad_usuario->execute(); if($cad_usuario->rowCount()){ echo "<p style='color: green;'>Usuário cadastrado com sucesso!</p>"; }else{ echo "<p style='color: #ff0000;'>Erro ao cadastrar usuário!</p>"; }} ?> <form name="cad_usu" class="form" method="POST" action=""> <input class="field" name="nome" placeholder="Nome" required> <input class="field" type="email" name="email" placeholder="E-mail" required> <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 type="hidden" name="situacoe_id" value="1"> <input type="hidden" name="niveis_acesso_id" value="1"> <input type="hidden" name="created" value='<?php echo date("Y-m-d H:i:s"); ?>'> <input type="hidden" name="modified" value='<?php echo date("Y-m-d H:i:s"); ?>'> <input class="field2" type="submit" name="CadUsuario" value="Cadastrar Usuário"> <input class="field2" type="reset" value="Limpar Formulário"> </form> </div> </section> </div> </body> </html> Código de login: <?php session_start(); 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>Cadastro de Usuário</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> <?php $dados = filter_input_array(INPUT_POST,FILTER_DEFAULT); if(!empty($dados['SendLogin'])){ $query_usuario = "SELECT id, nome, email, senha FROM usuario WHERE email =:email AND senha =:senha LIMIT 1"; $result_usuario = $conn->prepare($query_usuario); $result_usuario->bindParam(':email', $dados['email']); $result_usuario->bindParam(':senha', password_hash($dados['senha'], PASSWORD_BCRYPT,['cost=>12'])); $result_usuario->execute(); if(($result_usuario) AND ($result_usuario->rowCount() !=0)){ $row_usuario = $result_usuario->fetch(PDO::FETCH_ASSOC); if($dados['senha'] == $row_usuario['senha']) { $_SESSION['id'] = $row_usuario['id']; $_SESSION['nome'] = $row_usuario['nome']; header("Location: painel.php"); }else{ $_SESSION['msg'] = "<p style='color: red'>Erro: Usuário e/ou senha inválidos!</p>"; } }else{ $_SESSION['msg'] = "<p style='color: red'>Erro: Usuário e/ou senha inválidos!</p>"; } } if(isset($_SESSION['msg'])){ echo $_SESSION['msg']; unset($_SESSION['msg']); } ?> <form name="cad_usu" class="form" method="POST" action=""> <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"> </form> </div> </section> </div> </body> </html>
  12. Consegui achar o erro. Erro de digitação. Estava $cad_ususario, mas deveria ser $cad_usuario. O mais fácil é sempre o mais difícil. Obrigado!
  13. Olá, amigos, meu código conecta normalmente ao BD, faz tudo certinho, não retorna erro, mas não grava. O que pode ser? Página do formulário e do php: <?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>Cadastro de Usuário</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"> <h2>Cadastro</h2> Por favor, preencha todos os dados para criar um novo usuário.<br><br> <?php $dados = filter_input_array(INPUT_POST, FILTER_DEFAULT); if (!empty($dados['CadUsuario'])) { var_dump($dados); $query_usuario = "INSERT INTO usuario (nome, email, senha, situacoe_id, niveis_acesso_id, created, modified) VALUES ('" . $dados['nome'] . "', '" . $dados['email'] . "', '" . $dados['senha'] . "', '" . $dados['situacoe_id'] . "', '" . $dados['niveis_acesso_id'] . "', '" . $dados['created'] . "', '" . $dados['modified'] . "') "; $cad_usuario = $conn->prepare($query_usuario); $cad_usuario->execute(); } ?> <form name="cad_usu" class="form" method="POST" action=""> <input class="field" name="nome" placeholder="Nome" required> <input class="field" type="email" name="email" placeholder="E-mail" required> <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 type="hidden" name="situacoe_id" value="1"> <input type="hidden" name="niveis_acesso_id" value="1"> <input type="hidden" name="created" value='<?php echo date("Y-m-d H:i:s"); ?>'> <input type="hidden" name="modified" value='<?php echo date("Y-m-d H:i:s"); ?>'> <input class="field2" type="submit" name="CadUsuario" value"Cadastrar Usuário"> <input class="field2" type="reset" value"Limpar Formulário"> </form> </div> </section> </div> </body> </html> E meu arquivo de conexão: <?php $host = "localhost"; $user = "usuario"; $pass = "*****"; $dbname = "banco"; $conn = new PDO ("mysql:host=$host;dbname=".$banco,$user,$pass); ?>
  14. Amigos, peço a gentileza me ajudarem a encontrar o erro. Meu sistema de cadastro de usuários grava todos os dados no Banco, menos o nome. Segue os códigos: php: <?php $nome = $_POST['nome']; $email = $_POST['email']; $usuario = $_POST['usuario']; $senha = MD5($_POST['senha']); $nivel = 1; $ativo = 0; $cadastro = date('d/m/Y', time());; $connect = mysql_connect('localhost','*************','*************'); $db = mysql_select_db('****************'); $query_select = "SELECT usuario FROM usuarios WHERE usuario = '$usuario'"; $select = mysql_query($query_select,$connect); $array = mysql_fetch_array($select); $logarray = $array['usuario']; if($usuario == "" || $usuario == null){ echo"<script language='javascript' type='text/javascript'>alert('O campo usuário deve ser preenchido');window.location.href='cadastro.html';</script"; }else{ if($logarray == $usuario){ echo"<script language='javascript' type='text/javascript'>alert('Esse usuário já existe');window.location.href='cadastro.html';</script>"; die(); }else{ $query = "INSERT INTO usuarios (nome,email,usuario,senha,nivel,ativo,cadastro) VALUES ('$nome','$email','$usuario','$senha','$nivel','$ativo','$cadastro')"; $insert = mysql_query($query,$connect); if($insert){ echo"<script language='javascript' type='text/javascript'>alert('Usuário cadastrado com sucesso!');window.location.href='login.html'</script>"; }else{ echo"<script language='javascript' type='text/javascript'>alert('Não foi possível cadastrar esse usuário');window.location.href='cadastro.html'</script>"; } } } ?> html: <html> <head> </head> <body> <form method="POST" action="cadastro.php"> <label>Nome Completo:</label><input type="text" name="nome" id="nome"><br> <label>E-mail:</label><input type="text" name="email" id="email"><br> <label>Usuário:</label><input type="text" name="usuario" id="usuario"><br> <label>Senha:</label><input type="password" name="senha" id="senha"><br> <input type="submit" value="Cadastrar" id="cadastrar" name="cadastrar"> </form> </body> </html>
  15. Olá. Tenho uma página de login, que salvei como index.php. Quando o usuário entra com login e senha corretos, a página redireciona para outra página, a index2.php. É uma página independente, não sendo viável no meu projeto colocá-la como um include na página principal. Tudo funciona. Exceto que, se o usuário, sem logar, digitar o endereço completo da página, ou seja, www.meusite.com.br/index2.php, ela abre normalmente. Como fazer para que ela não abra, se não passar antes pela página de login? Esta é minha página index.php: </style> <?php include('app/connection.php'); ?> </head> <body> <div id="corpo"> <center><img src="app/img/logo.png" width="500" height="210"></center></div><BR> <div id="paginas"> <?php @session_start(); include('valida_user.php'); ?> </div> Esta é a página valida_user.php <?php @session_start(); if(isset($_POST['enviar'])){ $usuario = $_POST['usuario']; $senha = $_POST['senha']; if($usuario ==''){echo "<h4>Por favor, insira um nome de usuário válido</h4>"; }else if($senha ==''){echo "<h4>Por favor, insira sua senha</h4>"; }else{ $sql = "SELECT * FROM usuarios WHERE usuario = '$usuario' AND senha = '$senha' "; $result = mysqli_query($conexao, $sql); if(mysqli_num_rows($result) > 0){ while($res = mysqli_fetch_array($result)){ $ativo = $res['ativo']; $nivel = $res['nivel']; $usuario = $res['usuario']; $senha = $res['senha']; $email = $res['email']; $nome = $res['nome']; $cadastro = $res['cadastro']; header("Location: index2.php"); exit; } }else{ echo "<center><h3>Usuário ou senha inválidos</h3></center>"; } } } ?>
×
×
  • Criar Novo...