OmegaX 0 Denunciar post Postado Fevereiro 25, 2009 Olá a todos! Sou iniciante em PHP :P e minha dúvida é a seguinte, estou criando um sistema de login usando PHP/MySQL, baseado em alguns tutoriais na internet e inclusive com ajuda do próprio fórum imasters, para o site que estou desenvolvendo. O cadastro e o login funcionam perfeitamente, entretanto, gostaria que isso fosse feito dessa forma: - O usuário se cadastra - Efetua o login, a partir da página principal (index.php) - Ao efetuar o login os campos que o usuário digitou (login e senha) para entrar desaparecem e no lugar aparece: Bem-vindo(a), Nome_do_usuário ( Sair ) - Os campos só aparecem novamente na página principal quando o usuário faz o logout Obs: O sistema seria igual ao desse fórum, no início tem lá os campos, depois que você loga eles somem e no lugar fica Bem-vindo(a), Nome_do_usuário ( Sair ). Lembrando que tudo isso na mesma página (index.php). Se isso é possível, como pode ser feito?. Grato desde já! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
visitante_php 0 Denunciar post Postado Fevereiro 25, 2009 se eh possivel eh, ae você precisa fazer uma condicional neh? se o usuario nao estiver logado, aparece o form, se tiver, apare o nome e link de logout..... Compartilhar este post Link para o post Compartilhar em outros sites
Thomazelli 0 Denunciar post Postado Fevereiro 25, 2009 Boa noite Cara, acho que a melhor saida para o seu caso seria trabalhar com cookies. No momento que o usuário preenche o login e senha dele, voce define um cookie com o id do usuário por exemplo e depois redireciona o usuario de volta para a pagina que desejar. No local onde existe o formulario de login e senha, voce faz uma verificacao, onde pegaria o valor do cookie e, quando o mesmo for DIFERENTE de vazio, voce exibiria campo para o usuario efetuar LOGOUT, e se fosse VAZIO entao exibiria o formulario de login. Segue abaixo exemplo: //Gerando o cookie setcookie('NOME_DO_COOKIE', VALOR_DO_COOKIE); //No local onde existe o formulario voce utiliza o codigo abaixo, para pegar o valor do cookie e fazer a validacao $ValorCookie = $_COOKIE['NOME_DO_COOKIE_CRIADO']; if($ValorCookie==""){ //EXIBE O FORMULARIO DE LOGIN }else{ //EXIBE O NOME DO USUARIO E LINK PARA LOGOUT } Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
OmegaX 0 Denunciar post Postado Fevereiro 25, 2009 Puts é mesmo, vlw Igor! Então Thomazelli, to usando session, ouvi falar que setcookie não é muito seguro. Fiz assim: <?php session_start(); if(!$_SESSION["login"] and !$_SESSION["senha"]){ include "login.html"; } else { echo "Você já está logado<br>"; echo "<a href='logout.php'>Sair</a>"; } ?> Só que agora ta aparecendo isso: Notice: Undefined index: login in C:\Arquivos de programas\EasyPHP 2.0b1\www\login.php on line 3 Notice: Undefined index: senha in C:\Arquivos de programas\EasyPHP 2.0b1\www\login.php on line 3 :( Compartilhar este post Link para o post Compartilhar em outros sites
Skyo 1 Denunciar post Postado Fevereiro 25, 2009 Tenta.. <?php session_start(); if(!isset($_SESSION["login"]) || !isset($_SESSION["senha"])) { include "login.html"; } else { echo "Você já está logado<br>"; echo "<a href='logout.php'>Sair</a>"; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Thomazelli 0 Denunciar post Postado Fevereiro 25, 2009 Puts é mesmo, vlw! Fiz assim: <?php session_start(); if(!$_SESSION["login"] and !$_SESSION["senha"]){ include "login.html"; } else { echo "Você já está logado<br>"; echo "<a href='logout.php'>Sair</a>"; } ?> Só que agora ta aparecendo isso: Notice: Undefined index: login in C:\Arquivos de programas\EasyPHP 2.0b1\www\login.php on line 6 Notice: Undefined index: senha in C:\Arquivos de programas\EasyPHP 2.0b1\www\login.php on line 6 :( Voce esta trabalhando com session para o login? Bem, confirmou se o start do session esta sendo efetuado antes de qualquer insercao HTML? Outra coisa, tente definir variaveis para o valor das sessions e no IF verificar as suas variaveis. Compartilhar este post Link para o post Compartilhar em outros sites
OmegaX 0 Denunciar post Postado Fevereiro 25, 2009 Tenta.. <?php session_start(); if(!isset($_SESSION["login"]) || !isset($_SESSION["senha"])) { include "login.html"; } else { echo "Você já está logado<br>"; echo "<a href='logout.php'>Sair</a>"; } ?> Aee deu certo vlw Skyo! Era por causa do !isset. Então Thomazelli as variáveis ja estão definidas em uma outra página. :P Vocês saberiam me dizer se tem algum comando pra apagar os campos quando o usuário der submit? Isso claro, depois de enviar o formulário. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Skyo 1 Denunciar post Postado Fevereiro 25, 2009 Disponha =). Como assim, você está usando ajax para enviar e quer que limpe depois de enviado? Compartilhar este post Link para o post Compartilhar em outros sites
Thomazelli 0 Denunciar post Postado Fevereiro 25, 2009 Depende da forma como voce esta utilizando o formulario. Se voce envia com AJAX, no momento que voce retorna o valor dele, voce tambem zera os campos com o proprio javascript. Caso voce recarregue a pagina,nao haveria motivo, pois ele ja voltaria zerado. Segue abaixo um modelo de como fazer isso com o java script: function Limpar(){ document.NOME_DO_FORM.NOME_DO_CAMPO_1.value = ''; document.NOME_DO_FORM.NOME_DO_CAMPO_2.value = ''; } Nesse caso voce precisaria chamar essa funcao em alguma requisicao, como por exemplo no momento que envia o form. Coloca um exemplo de como envia este form para dar uma analisada melhor. Compartilhar este post Link para o post Compartilhar em outros sites
studdiox 0 Denunciar post Postado Fevereiro 25, 2009 Opa resolvido Ok desconsidere ehehhe http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
OmegaX 0 Denunciar post Postado Fevereiro 25, 2009 proteger.php <?php session_start(); //inicio a sessão. if(!$_SESSION["login"] and !$_SESSION["senha"]){ header("location: login.php"); //não existir a sessão ele redireciona para a pagina de login. } ?> index1.php <?php require("proteger.php"); ?> <html> <body> Seja bem vindo ao site!!!<br> Coloque o conteudo aqui!!! <br><br><br> <a href="logout.php">Logout</a> </body> </hmtl> login.php <?php session_start(); if(!isset($_SESSION["login"]) || !isset($_SESSION["senha"])) { include "login.html"; } else { echo "Você já está logado<br>"; echo "<a href='logout.php'>Sair</a>"; } ?> login.html <title>Login</title><form name="login" method="post" action="confirmar_login.php"> <table width="400" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td width="150" height="40"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Login:</font></td> <td width="250"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> <input name="login" type="text" id="login"> </font></td> </tr> <tr> <td height="30"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Senha:</font></td> <td><input name="senha" type="password" id="senha"></td> </tr> <tr> <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> </font></td> <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> </font></td> </tr> <tr> <td><div align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> <input name="entrar" type="submit" id="entrar" value="Entrar"> </font></div></td> <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href="senha.php">Esqueceu a senha?</a> <a href="cadastrar.php">Cadastre-se</a></font></td> </tr> </table> <div align="left"></div> </form> confirmar_login.php <?php //inicio a sessão session_start(); //include da conexão com o banco. include "config.php"; //recebo as variáveis. $login = $_POST["login"]; $senha = $_POST["senha"]; $erro = ""; // verifico se estão preenchidos. $db =mysql_connect ("$host", "$login_db", "$senha_db") or die ("Não foi possível conectar ao Banco de Dados"); //conectamos ao mysql $basedados = mysql_select_db("$database"); //selecionamos o database escolhido if(empty($login) || empty($senha)){ echo "você deve informar o usuário e a senha."; $erro +=1; //informo que ocorreu um erro. } // agora verifico se ocorreu erro ou não. if($erro != 0) { echo "$erro"; echo "<br>"; echo "<a href='#' onclick='java script:history.go(-1)'>Voltar</a>"; } //se não ocorreu erro else{ $sql = mysql_query("select * from tbl_usuarios where login='$login' and senha='$senha'"); $rows = mysql_num_rows($sql); //verifico se existe registros na consulta if($rows!=0){ //a consulta nao for 0 $mostra = mysql_fetch_array($sql); // busco todas as informações da consulta. //incremento as variáveis. $nome = $mostra["nome"]; $senha = $mostra["senha"]; //crio as sessoes $_SESSION["login"] = $login; //sessão do usuario $_SESSION["senha"] = $senha; //crio a sesão da senha $_SESSION["nome"] = $nome; //crio tb a sessão do nome para ser exibido //apresento uma mensagem de boas vindas usando o alert e puxando o php dentro do javascript echo "<script> alert('Seja bem Vindo, " . $nome . " '); </script>"; //redireciono para a pagina padrão echo "<script> window.location='index1.php'; </script>"; }//fecho o if else{ //por algum motivo for 0 a consulta echo "<script>alert('Usuário e senha Não reconhecidos.'); history.back()</script>"; //se for 0 mostro mensagem e utilizo a função js para voltar para a pagina. }//fecho o else da consulta }//fecho o else de verificação mysql_close($con); ?> Ta meio bagunçado, por que fico modificando direto, mas aqui funciona direitinho. Compartilhar este post Link para o post Compartilhar em outros sites
Thomazelli 0 Denunciar post Postado Fevereiro 25, 2009 O problema esta com o redirecionamento que voce faz em caso de erro. echo "<a href='#' onclick='java script:history.go(-1)'>Voltar</a>"; O que poderia fazer e apenas colocar um link para a pagina que ele estava. Caso ele tenha a possibilidade de efetuar login em varias paginas, entao teriamos um "probleminha": Pra qual pagina voltar? Qual a situacao? Ele faz login somente em 1 pagina ou pode ser feito em varias? Compartilhar este post Link para o post Compartilhar em outros sites
Skyo 1 Denunciar post Postado Fevereiro 25, 2009 Tá só não entendi direito o que você quer o0. Obs: ele não ta limpando pq você ta usando javascript para voltar no histórico, use isso: header("Location: index.php");Obvio, no lugar de index.php use a página para onde quer que direcione. Você poderia usar o header passando o erro, tipo: header("Location: index.php?erro=$erro"); E na pagina index.php ou seja la qual for: $erro = $_GET["erro"]; if(!empty($erro)){echo("$erro");} Compartilhar este post Link para o post Compartilhar em outros sites
OmegaX 0 Denunciar post Postado Fevereiro 25, 2009 Tá só não entendi o que você quer o0. Obs: ele não ta limpando pq você ta usando javascript para voltar no histórico, use isso: header("Location: index.php");Obvio, no lugar de index.php use a página para onde quer que direcione. Quero que ao clicar em entrar, antes de entrar apague os campos, pra quando o usuário voltar na página de login não estiver la o login dele. É igual esses sites que a gente acessa, aparece la uma checkbox pra salvar os campos, assim quando o usuário volta eles estão la, sem isso eles não ficam salvos. Compartilhar este post Link para o post Compartilhar em outros sites
Thomazelli 0 Denunciar post Postado Fevereiro 25, 2009 Caso voce tenha esse login com include em varias paginas, voce teria que passar a URL junto com o form (pode ser com um input type="hidden"), e a partir dessa nova variavel redirecionar o usuario com header que o Skyo citou acima, assim nao teria problemas em retornar o usuario para uma pagina errada. Compartilhar este post Link para o post Compartilhar em outros sites
Skyo 1 Denunciar post Postado Fevereiro 25, 2009 Tá só não entendi o que você quer o0. Obs: ele não ta limpando pq você ta usando javascript para voltar no histórico, use isso: header("Location: index.php");Obvio, no lugar de index.php use a página para onde quer que direcione. Quero que ao clicar em entrar, antes de entrar apague os campos, pra quando o usuário voltar na página de login não estiver la o login dele. É igual esses sites que a gente acessa, aparece la uma checkbox pra salvar os campos, assim quando o usuário volta eles estão la, sem isso eles não ficam salvos. Amigo basta fixar, não fica "salvo" é porque você volta usando javascript com history.go, o ideal é fazer como disse usando header. Compartilhar este post Link para o post Compartilhar em outros sites
Thomazelli 0 Denunciar post Postado Fevereiro 25, 2009 Cara, no submit do FORM voce requisita um javascript entao. Segue abaixo o codigo: <script> function Limpar(){ document.login.login.value = ""; document.login.senha.value = ""; } </script> Outra coisa que poderia fazer tambem e, sempre na pagina de login, chamar no body esta função. Ficaria assim: <body onLoad="Limpar()"> </body> Compartilhar este post Link para o post Compartilhar em outros sites
OmegaX 0 Denunciar post Postado Fevereiro 25, 2009 Foi mal ae gente, nem tinha visto o código em javascript ali, problema resolvido hehe. Muito obrigado pela atenção de vocês! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
Thomazelli 0 Denunciar post Postado Fevereiro 25, 2009 Disponha...precisando de alguma coisa estamos ai... Abraços... http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites