Apenas Eu 13 Denunciar post Postado Novembro 2, 2014 Olá! Alí no topo do meu site ( http://dcsdesenvolvimento.com.br/ ) no topo tem um link simbolico de logar / deslogar Como faz para que, quando o usuario estiver logado, aparecer "sair" e quando deslogado "entrar" ? Eu vi uns códigos na net, mas não entendi bem como implementar..... Daí no caso eu teria que colocar o código dentro da página principal ou teria que criar alguma outra pagina? Valeu Compartilhar este post Link para o post Compartilhar em outros sites
Denisson Lucas 4 Denunciar post Postado Novembro 2, 2014 vou tentar te ajudar, bom, primeiramente seu site ja tem sistema de login? Compartilhar este post Link para o post Compartilhar em outros sites
Apenas Eu 13 Denunciar post Postado Novembro 2, 2014 Obrigado Denisson pela resposta rápida!! Então, o site ainda não tem, eu to montando tudo no server local aqui. Quer dizer, ele até que tem, mas este recurso não está online Compartilhar este post Link para o post Compartilhar em outros sites
Denisson Lucas 4 Denunciar post Postado Novembro 2, 2014 Para compreender melhor, faça oque vou falar abaixo no localhost e depois que conseguir inclemente-o no site. bom, crie um arquivo chamado index.php com o seguinte codigo: <?php session_start(); if ($_SESSION ['logado']){ echo "<a href='sair.php'>'Sair'</a>"; } else{ echo "<a href='login.php'>'Entrar'</a>"; } ?> agora crie um arquivo chamado login.php com o seguinte codigo: <form action="autenticacao.php" method ="post"> Usuario: <input name="usuario" type="text" /> Senha: <input name="senha" type="pass" /> <input value="Lougar" type="submit"></input> </form> Agora crie uma pagina sair.php com o seguinte codigo: <?php Session_start(); $_SESSION['logado'] = False; Echo"você deslougou com sucesso"; ?> AGORA A PARTE MAIS IMPORTANTE: Crie uma pagina chamada autenticacao.php, e nela coloque o codigo <?php $conectar = mysql_connect('localhost', 'root', 'vertrigo',); $usuario = $_POST['usuario']; $senha = $_POST['senha']; mysql_select_db("usuarios", $conectar) or print(mysql_error()); $verifica = mysql_query("SELECT * FROM usuarios WHERE user ='".$usuario."' AND pass = '".$senha."'") or die("erro ao selecionar"); if (mysql_num_rows($verifica)<=0) { Session_start(); $erro = "<center> senha incorreta </center>"; $_SESSION['codigo']= $erro; echo"<script language='javascript' type='text/javascript'>alert('Login e/ou senha incorretos');window.location.href='/index.php?senha_invalida';</script>"; exit(); } else { $_SESSION['logado'] = TRUE; header('location: index.php'); die; } ?> Agora dando uma leve explicada, quando você faz o login, na autenticacao ele cria um cache, e na index ele verifica se tem o cache ou nao, se tiver cache é por que esta lougado e aparece sair, se nao tiver o cache naoe sta lougado... e aparece sair... Não entendeu? comente ou entao me adiciona no facebook: https://www.facebook.com/denissonlucas12 Se nao conseguir colocar no site ou qualquer coisa me adiciona no facebook que te ajudo. Não tenho certeza se vai funcionar por que não testei ainda... mais vou publicar e vou testar, se eu achar algum erro eu edito aqui. Desculpe as gambiarras, tenho apenas 13 anos e estou aprendendo.. vlw Compartilhar este post Link para o post Compartilhar em outros sites
Denisson Lucas 4 Denunciar post Postado Novembro 2, 2014 Conseguiu? aqui testei e pegou de boa, qualquer coisa avisa :D Compartilhar este post Link para o post Compartilhar em outros sites
Apenas Eu 13 Denunciar post Postado Novembro 2, 2014 Ola Denilson!!! Eu nem pude mexer porque eu viajei e só cheguei agora pouco... Eu peço também desculpa por nao ter falado mas na verdade a parte de autenticação, login e tals eu ja tenho. Mas vc fala para fazer esse outro para depois tentar implementar no meu? Compartilhar este post Link para o post Compartilhar em outros sites
Denisson Lucas 4 Denunciar post Postado Novembro 3, 2014 Sim, mais se você ja tem o sistema de autenticacao e login, pegue e faça assim: La na parte da autenticacao: peque e logo que iniciar o php colocoque o codigo Session_start(); você tem que colocar esse codigo antes de exibir qualquer menssagem ( echo ), entao é bom colocar no inicio, Bom, dai na parte da autenticacao aonde ele verifica que a senha esta correta, coloque o codigo: $_SESSION['logado'] = TRUE; Isso cria uma cache, entao lembrando que você deve colocar o codigo esse codigo na parte aonde ele fala que a senha esta correta, pq se estiver correta ele vai criar o cache. Entendido? Agora a parte em que ele exibe entrar/sair: Na index sabe la aonde você colocou a palavra "entrar"? substitua essa palavra la por: <?php session_start(); if ($_SESSION ['logado']){ echo "<a href='sair.php'>Sair</a>"; } else{ echo "<a href='login.php'>Entrar</a>"; } ?> Repare no session_start(); que esta bem no inicio como eu falei acima haha agora explicando esse codigo acima, lembra que eu falei que la na autenticacao se a senha tivesse correta ele ia criar um cache? entao.. o codigo acima ele verifica se esse cache existo... ou seja, se você esta lougado.. dai se tiver lougado ele aparece sair, se nao tiver lougado ele aparece sair... E na pagina Sair coloque o codigo <?php Session_start(); $_SESSION['logado'] = False; Echo"você deslougou com sucesso"; ?> o codigo sair é a mesma coisa que citei, ele exclui o cache, ou seja, você esta deslougado. Simples né? entendeu? :D qualquer coisa avisa, entendeu? :) Compartilhar este post Link para o post Compartilhar em outros sites
Apenas Eu 13 Denunciar post Postado Novembro 3, 2014 Olá! Denilson! Seu conhecimento sobre PHP é incrivel, se vc num falasse sua idade eu nunca ia imaginar, mas enfim... Sobre seu cód. algo deu errado aqui. No cód da index está dando o segunte erro: Undefined index: logado in C:\xampp\htdocs\dcs3\SAIR\index.php on line 3 Faltou algum detalhezinho :) Compartilhar este post Link para o post Compartilhar em outros sites
ExtremsX 58 Denunciar post Postado Novembro 3, 2014 Provavelmente você está tentando usar uma variavel sem iniciar ela, tente fazer o seguinte: if ($_SESSION['logado']) mude para if (isset($_SESSION['logado']) && $_SESSION['logado']) ou para if (@$_SESSION['logado']) Compartilhar este post Link para o post Compartilhar em outros sites
Apenas Eu 13 Denunciar post Postado Novembro 3, 2014 opa! Bem q eu imaginei q era algo assim para resolver, mas tambem pensei que nesse caso seria outro esquema. Bom isso está resolvido, todavia, ao logar apareceu esta mensagem no botaozinho: Notice: A session had already been started - ignoring o Cod da validação ou autenticação: <?php @session_start(); // inclui o arquivo de configuração do sistema include "Config/config_sistema.php"; // verifica se a variavel existir if(isset($_SESSION['login_usuario']) and isset($_SESSION['senha_usuario'])) { // se existie as sessões coloca os valores em uma varivel $login_usuario = $_SESSION['login_usuario']; $senha_usuario = $_SESSION['senha_usuario']; } else { $erro = urlencode("Você não esta logado!"); header("Location: ../index.php"); exit; } // verifica se as variaveis estão atribuidas if(!(empty($login_usuario) or empty($senha_usuario))) { // se estiverem atribuidos vamos ver se exist o login $consulta = mysql_query("select * from dados_usuarios where Login = '$login_usuario'"); if(mysql_num_rows($consulta) == 1) { // se o usuario exostir vamos verificar a senha if($senha_usuario != mysql_result($consulta,0,"Senha")) { // se a senha está correta vamos apagar a // sessão que existia mas erra a errada unset($_SESSION['login_usuario']); unset($_SESSION['senha_usuario']); $erro = urlencode("Você não esta logado!"); header("Location: ../index.php"); exit; } } else { unset($_SESSION['login_usuario']); unset($_SESSION['senha_usuario']); $erro = urlencode("Você não esta logado!"); header("Location: ../index.php"); exit; } } else { // caso as sessões estarem vaizias $erro = urlencode("Você não esta logado!"); header("Location: ../index.php"); exit; } mysql_close($conn); ?> Compartilhar este post Link para o post Compartilhar em outros sites
Vitor RC 11 Denunciar post Postado Novembro 3, 2014 Pode ser o php.ini que está configurado para iniciar uma sessão automaticamente. Faz o seguinte acessa na sua hospedagem o arquivo php.ini e procure pelo valor session.auto_start e verifique se ele está com 1 em sua frente. Se sim, mude para 0. Compartilhar este post Link para o post Compartilhar em outros sites
Apenas Eu 13 Denunciar post Postado Novembro 3, 2014 Pode ser o php.ini que está configurado para iniciar uma sessão automaticamente. Faz o seguinte acessa na sua hospedagem o arquivo php.ini e procure pelo valor session.auto_start e verifique se ele está com 1 em sua frente. Se sim, mude para 0. Se eu olhei no lugar certo, ela já está no 0 :) Compartilhar este post Link para o post Compartilhar em outros sites
ExtremsX 58 Denunciar post Postado Novembro 3, 2014 Procure pelo código a função session_start() e veja se ela está em mais de um lugar, se tiver deixe em um só lugar. Eu normalmente coloco só no arquivo onde faço a conexão com o banco de dados Compartilhar este post Link para o post Compartilhar em outros sites
Apenas Eu 13 Denunciar post Postado Novembro 3, 2014 Vou ver! Tem varias linha em todos os arquivos com esta função Compartilhar este post Link para o post Compartilhar em outros sites
ExtremsX 58 Denunciar post Postado Novembro 3, 2014 Tente deixa essa função em um arquivo só (como o arquivo que se conecta ao banco de dados) e chame esse arquivo em cada arquivo. Ou habilite o inicio automático da sessão pelo php.ini Compartilhar este post Link para o post Compartilhar em outros sites
Apenas Eu 13 Denunciar post Postado Novembro 3, 2014 A maioria dos session start está na pagina de login: <?php // inclui o arquiv o de configuração do sistema include 'Config/config_sistema.php'; // revebe dados do formulario $login = htmlspecialchars($_POST['login']); $senha = $_POST['senha']; // verifica se o usuario existe $consulta = mysql_query("select * from dados_usuarios where Login='$login'"); $campos = mysql_num_rows($consulta); if($campos != 0) { // se o usuario existi verifica a senha dele if($senha != mysql_result($consulta,0,"Senha")) { echo "<font color=red><b> Senha incorreta! </font></b>"; exit; } else { // estiver tudo certo vamos ver se ele é o administrador if($login == $login_admin) { // se for o login do administrador vamos verificar a senha dele // se é igual a do administrado if($senha == $senha_admin) { // se for o administrador vomos criar a sessão session_start(); $_SESSION['login_usuario'] = $login; $_SESSION['senha_usuario'] = $senha; // redireciona o link para uma outra pagina header("Location: Admin/listar_usuarios.php"); } } else { // se o login não for do administrado vamos criar a sessão dele session_start(); $_SESSION['login_usuario'] = $login; $_SESSION['senha_usuario'] = $senha; // redireciona o link para uma outra pagina header("Location: minha-conta.php"); } } } else { echo "<font color=red><b> O usuario não existe! </font></b>"; exit; } ?> Viu! Eu estava falando com um colega e ele me sugeriu o seguinte, o que parece que deu certo. Troquei: <?php *if (isset($_SESSION['logado']) && $_SESSION['logado']){ echo "<a href='logout.php'>SAIR</a>"; } else{ echo "<a href='login.php'>ENTRAR</a>"; ?> por <?php if (isset($_SESSION['login_usuario']) && $_SESSION['senha_usuario']){ echo "<a href='logout.php'>SAIR</a>"; } else{ echo "<a href='login.php'>LOGIN</a>"; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Denisson Lucas 4 Denunciar post Postado Novembro 3, 2014 Danilo, eu não sei muito de php... é que a mais ou menos uma semana atras eu fiz um projeto parecido... entao eu ja tinha tudo no meu pc :D e sobre os erros, as vezes no localhost da alguns erros, tente enviar para o seu site apenas para fazer um teste... Compartilhar este post Link para o post Compartilhar em outros sites
Apenas Eu 13 Denunciar post Postado Novembro 3, 2014 Mas blz Denisson vc ajudou um monte. Na sua idade eu nem sabia o que era html rsss Meu colega só fez um pequeno ajuste. Muito obrigado Muito Obrigado também ao Extreme e ao VitorRC pelo suporte Vou indo que meu projeto continua e vou voltar para outro tópico que eu abri :joia: Compartilhar este post Link para o post Compartilhar em outros sites
Denisson Lucas 4 Denunciar post Postado Novembro 3, 2014 Seus sites são muitos bonitos, gostei dos 2 ( o de formula1 e o dcs desenvolvimento ) parabéns!!! Mais Você conseguiu resolver tudo? tem mais alguma duvida? :D Compartilhar este post Link para o post Compartilhar em outros sites