deehhalves 0 Denunciar post Postado Outubro 19, 2015 Minha página de login está tudo ok, ela vai até ao banco e verifica se existe tal login, se não existe retorna um erro para o usuário enfim. Porém, já tentei de - quase - todas as formas fazer com que: se existir o cadastro no banco de dados, ele inicia uma seção (session_start), o que realmente vai determinar se o usuario está logado. (Claro, depois tratar essa função bonitinha). Resumo: Preciso aprender a fazer com que a session_start esteja realmente funcionando e que eu consiga "quebrar" essa session_start (session_destroy). HTML - (cógido da página inteira) <?php include 'conexao.php'; ?> <?php if (!isset($_SESSION['email']) && (!isset($_SESSION['senha']))) { echo "Não existe nenhuma seção aberta!"; }else{ echo "Já existe uma seção aberta!"; } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>.: Major arms :.</title> <link href="style.css" rel="stylesheet" type="text/css" /> <link rel="stylesheet" type="text/css" href="css/bootstrap.css"> <link rel="stylesheet" type="text/css" href="css/full-slider.css"> <link rel="stylesheet" type="text/css" href="css/owl.transitions.css"> <link rel="stylesheet" type="text/css" href="css/owl.theme.css"> <link rel="stylesheet" type="text/css" href="css/owl.carousel.css"> <script src="js/jquery.js"></script> <script src="js/bootstrap.min.js"></script> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script src="http://areaaperta.com/nicescroll/js/jquery.nicescroll.min.js"></script> <script type="text/javascript"> $(document).ready(function() { $(".username").focus(function() { $(".user-icon").css("left","-48px"); }); $(".username").blur(function() { $(".user-icon").css("left","0px"); }); $(".password").focus(function() { $(".pass-icon").css("left","-48px"); }); $(".password").blur(function() { $(".pass-icon").css("left","0px"); }); }); </script> <script> $(document).ready(function () { $("html").niceScroll(); }); </script> <script> $(function() { $('#wrapper').hide().fadeIn('slow'); }); </script> <!--<--?php include ('topo_paginas.php');?> --> </head> <body style="background: url(img/bg_login.jpg) repeat;"> <div id="wrapper"> <div class="user-icon" style="margin-top: 22px;"></div> <div class="pass-icon" style="margin-top: 25px;"></div> <form name="login-form" class="login-form" enctype="multipart/form-data" method="post"> <div class="header"> <center><img src="img/logo.png" style="width: 110px; margin-left: 20px; margin-top: 20px;" ><center> <h1>Faça seu login</h1> <span>Preencha o formulário corretamente para acessar sua conta.</span> </div> <div class="content"> <input name="username" required type="email" class="input username" placeholder="E-mail" /> <input name="password" required type="password" maxlength="8" class="input password" placeholder="Senha" /> <?php include 'login_valid.php'; ?> </div> <div class="footer"> <input type="submit" name="logar" value="Logar" class="button" /> </div> </form> <input type="submit" href="registrar.php" onClick="window.location='registrar.php';" name="submit" value="Cadastre-se" class="registrar_pg_login" /> </div> </body> </html> PHP <?php if(isset($_REQUEST['logar'])) { $email = $_REQUEST['username']; $senha = $_REQUEST['password']; $sql = "SELECT * FROM cadastro WHERE email = '$email' AND senha = '$senha' "; $query = mysql_query($sql) or die(mysql_error()); $rows = mysql_num_rows($query); if ($rows == 0) { echo "<div class='alert alert-danger' role='alert'><strong>Ops!!</strong> Senha e/ou email inválido. <strong>Tente novamente.</strong></div>"; }else{ $_SESSION['email'] = $email; $_SESSION['senha'] = $senha; echo "<div class='alert alert-success' role='alert'><strong>Pronto!!</strong> Você já está logado!</div>"; //session_start();??? } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Outubro 19, 2015 $_SESSION só existe se session_start() for chamada antes Ou seja, session_start() deve ser chamada em todas as páginas onde a session será usada, inclusive no script que usa session_destroy(). Compartilhar este post Link para o post Compartilhar em outros sites
deehhalves 0 Denunciar post Postado Outubro 20, 2015 Muito obrigado, amigo. Consegui dessa forma: "Pagina php" <?php if(isset($_REQUEST['logar'])) { $email = $_REQUEST['username']; $senha = $_REQUEST['password']; $sql = "SELECT * FROM cadastro WHERE email = '$email' AND senha = '$senha' "; $query = mysql_query($sql) or die(mysql_error()); $rows = mysql_num_rows($query); if ($rows == 0) { echo "<div class='alert alert-danger' role='alert'><strong>Ops!!</strong> Senha e/ou email inválido. <strong>Tente novamente.</strong></div>"; }else{ $_SESSION['email'] = $email; $_SESSION['senha'] = $senha; echo "<div class='alert alert-success' role='alert'><strong>Pronto!!</strong> Você já está logado!</div>"; } } ?> "Página HTML" <?php session_start(); if (!isset($_SESSION['email']) && (!isset($_SESSION['senha']))) { echo "Não existe nenhuma seção aberta!"; }else{ echo "Já existe uma seção aberta!<br>"; $sql = "select * from cadastro"; mysql_query($sql); $consulta = mysql_query($sql)or die(mysql_error()); while($sql_result = mysql_fetch_assoc($consulta)){ echo "<td>".$sql_result['id_cliente']."</td><br>"; echo "<td>".$sql_result['nome']."</td><br>"; echo "<td>".$sql_result['email']."</td><br>"; echo "<td>".$sql_result['senha']."</td><br>"; echo "<td>".$sql_result['tipo']."</td><br>"; } } ?> Porém, se eu fizer 2 logins ele aceita e ali na query que ele faz na variavel $consulta ele mostra os dois logins (o que não deveria); Qual a verificação que devo fazer? (Na verdade ele pega todos os cadastros que estão no banco mesmo eu logando somente com 1) Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Outubro 20, 2015 Você usou a consulta select * from cadastro, sem filtragem alguma. Filtre pelo usuário logado, usando WHERE: select * from cadastro where id = <id_do_usuario_logado>; pode filtrar pelo email também, ou qualquer outro identificador único Compartilhar este post Link para o post Compartilhar em outros sites
deehhalves 0 Denunciar post Postado Outubro 20, 2015 Não sei se minha lógica está certa (pelo que testei aqui, não) mas: se eu fizer um select pelo id do cliente por exemplo: $sql = "select nome, email from cadastro where id = 1"; mysql_query($sql); $consulta = mysql_query($sql)or die(mysql_error()); while($sql_result = mysql_fetch_assoc($consulta)){ echo "<td>".$sql_result['id_cliente']."</td><br>"; echo "<td>".$sql_result['nome']."</td><br>"; echo "<td>".$sql_result['email']."</td><br>"; echo "<td>".$sql_result['senha']."</td><br>"; echo "<td>".$sql_result['tipo']."</td><br>"; } Mesmo não logando com o usuario com id = 1, ele vai listar o nome e email do usuario que tem o id = 1. Conseguiu entender? rsrs Eu preciso do nome e do email do usuario que tiver com sua "(isset($_SESSION = true" Compartilhar este post Link para o post Compartilhar em outros sites
Fernando C 128 Denunciar post Postado Outubro 20, 2015 avisos: seu código está obsoleto, pesquise sobre PDO. No mais: http://www.linhadecodigo.com.br/artigo/2975/comandos-basicos-em-sql-insert-update-delete-e-select.aspxhttp://www.linhadecodigo.com.br/artigo/75/principais-instrucoes-em-sql.aspx Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Outubro 20, 2015 Mesmo não logando com o usuario com id = 1, ele vai listar o nome e email do usuario que tem o id = 1. Conseguiu entender? rsrs Eu preciso do nome e do email do usuario que tiver com sua "(isset($_SESSION = true" Para isso, use o dado que você salvou na session. Hoje você já está salvando o email. Use esse dado, como eu sugeri no meu post anterior Você pode salvar o ID, se preferir PS: funções mysql_* estão obsoletas desde o PHP 5.5 e já foram removidas no PHP 7. Prefira usar MySQLi ou PDO. Veja mais aqui: http://rberaldo.com.br/mysql-obsoleto-php/ Compartilhar este post Link para o post Compartilhar em outros sites
deehhalves 0 Denunciar post Postado Outubro 20, 2015 Obrigado pela dica! Compartilhar este post Link para o post Compartilhar em outros sites
deehhalves 0 Denunciar post Postado Outubro 20, 2015 Ah, antes de realmente "fechar" o tópico uma última dúvida: Ele só me retorna os valores do usuário logado quando eu recarrego a página. Ex: Faço o login > ele me retorna a mensagem de que deu certo echo "<div class='alert alert-success' role='alert'><strong>Pronto!!</strong> Você já está logado!</div>"; > mas só depois que atualizo a página ele abre a sessão e retorna com os valores que pedi que retornasse $sql = "SELECT nome FROM cadastro WHERE id_cliente = 1"; mysql_query($sql); $consulta = mysql_query($sql)or die(mysql_error()); while($sql_result = mysql_fetch_assoc($consulta)){ echo "Seja bem vindo, "; echo "<td>".$sql_result['nome']."</td><br>"; } Compartilhar este post Link para o post Compartilhar em outros sites