1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Login com opçao lembrar-me

Discussão em 'Web Development' iniciada por candycane, 31 de Julho de 2008. (Respostas: 25; Visualizações: 3475)

  1. candycane

    candycane Power Member

    Bom dia!
    estou a "ajeitar" o meu sistema de login, e uma das coisas que tou a tentar fazer é activar a opçao lembra-me... Só que não estou a conseguir criar os cookies... :(


    No login.php tenho isto:
    PHP:
     
    <?php
     session_start
    ();
     include(
    "../includes/database.php");
     require_once(
    "../includes/funcoes.php");
      
     
    $user mysql_prep($_POST['txt_admin']); 
     
    $pass sha1(mysql_prep($_POST['txt_admin_pass']));
     
     
    $sql "SELECT username, nivel, password, nome
        FROM login
        WHERE username='"
    .$user."' AND password='"$pass ."' AND nivel='admin' ";
     
          
     
    $resultado mysql_query($sql$ligacao);
      
     
    $linhas mysql_num_rows($resultado);
     
     
    $dados mysql_fetch_assoc($resultado);
     
     
    // verificar se o user quis ser lembrado
        
    if(isset($_COOKIE['cookname']) && isset($_COOKIE['cookpass']))
     {
        
    $_SESSION['username'] = $_COOKIE['cookname'];
        
    $_SESSION['password'] = $_COOKIE['cookpass'];
        }
     
     
     if((isset(
    $_POST['btn_entrar_admin'])) && ($linhas == 1))
     {
      
    $_SESSION['username'] = $user
      
    $_SESSION['password'] = $pass
      
    $_SESSION['nivel'] = $dados['nivel'];
      
    $_SESSION['nome'] = $dados['nome'];
      
      
    //cookies para opçao de checkbox lembar-me
      
    if($_POST['check_lembrar'])
      {  
         
    setcookie("cookname"$_SESSION['username'], time()+60*60*24*100"/");
         
    setcookie("cookpass"$_SESSION['password'], time()+60*60*24*100"/");
      }
     
      
    header ("Location: ../backoffice/index.php");
     }
     
     
    ?>
     
    Ja experimentei online, e não me cria os cookies cookname e cookpass :(

    Já agora.. como se muda o nome do cookie sessao? Eu vi que ta a ser chamado PHPSID... queria personaliza-lo...
     
  2. Guerreiro_21

    Guerreiro_21 Power Member

    boas
    pelo que vi por esta frase



    criaste um backoffice???


    tambem tenho que criar um para o meu projecto final de curso será que me podes dar umas dicas ::P





    abraços
     
  3. candycane

    candycane Power Member

    Loolol criei sim :)

    Ajudo-te no que souber :)
     
  4. Guerreiro_21

    Guerreiro_21 Power Member



    eu tenho este site http://centroteste.net63.net/ (para ja so a primeira pagina), ja vai buscar os dados a base de dados so que eu queria criar uma parte para o administrador poder alterar o conteúdo do site de forma simples .




    o teu tambem é assim ?



    abraço
     
  5. Guerreiro_21

    Guerreiro_21 Power Member



    n sei se te pode ajudar foi o prof k deu na aula http://centroteste.net63.net/php.pdf
     
  6. hostmake

    hostmake Power Member

    candycane, corre assim



    PHP:

      
    if($_POST['check_lembrar'])
      {  
    echo 
    " <br> Cheguei ao Criar COOKIE ";
         
    setcookie("cookname"$_SESSION['username'], time()+60*60*24*100"/");
         
    setcookie("cookpass"$_SESSION['password'], time()+60*60*24*100"/");
    echo 
    " <br> Cookies criadas: <br> <pre> ";
    print_r($_COOKIE);
    echo 
    "</pre>";
      }

     
  7. candycane

    candycane Power Member

    Axo que n esta a criar :(

    Código:
     
    Cheguei ao Criar COOKIE 
    Cookies criadas: 
    
     Array(    [PHPSESSID] => evdvnf1pfevpbvalulfs86huv5) 
    
     
  8. hostmake

    hostmake Power Member

    Pois ao, estranho, pergunto-me se ele cria as cookies se não fornecermos nenhum valor, ou seja, vamos lá testar se o teu SESSION tem alguma coisa.

    Mete outro setcookie, este:

    PHP:
    setcookie("Teste""Teste"time()+3600);
    E se este aparecer no print_r, ve la se os teus $_SESSION's tem valores, porque de resto parece-me bem.


    P.S: Eu não perguntei, mas isso é o 1º output que tens na página certo?

    As cookies são como os headers, tem que vir antes de qualquer outro OUTPUT.
     
  9. candycane

    candycane Power Member

    vi agora no firefox e esta a criar :D

    Só que quando tento entrar numa area privada, vai-me ter sp a pagina login :(

    tenho k verificar se ha cookies nas paginas restritas?

    eu so verifio se ha sessão...
     
  10. filipe3x

    filipe3x Power Member

    Obrigado pelo pdf! Tem informaçoes interessantes, principalmente para quem se está a iniciar nisto...

    Edit: Se tiveres mais do género, manda sff...
     
  11. candycane

    candycane Power Member


    Antes do html tenho o script que pus no 1º post...
     
  12. hostmake

    hostmake Power Member

    Sim, mas esse script está cheio de includes\require's, não podes ter nenhum OUTPUT de HTML para o ecrã, é isso que estou a dizer.

    E quanto a tua pergunta, eu não estou a ver o teu sistema login, mas, isto é tão simples como:

    PHP:
    if ($_COOKIE["cookname"]<>"")
          
    $user $_COOKIE["cookname"];

    $sql "SELECT * FROM login WHERE user='$user'";

    echo 
    $sql;

    E podes ver se estás a receber os valores direitos, não tem nada que saber.
     
  13. Guerreiro_21

    Guerreiro_21 Power Member





    na boa vou recolher todos os k o prof deu e posto aki :P
     
  14. Guerreiro_21

    Guerreiro_21 Power Member

  15. filipe3x

    filipe3x Power Member

  16. candycane

    candycane Power Member

    o meu sistema de login é este que puz ai.. a seguir so tem o html com o formulario...
     
  17. hostmake

    hostmake Power Member

    No código que puseste ai, só estas a verificar o login através de POST, tens que por cookies e sessions antes de tudo,e depois atribuis as variáveis, e mais uma vez repito-me, fazendo quote do Mpalhas do outro tópico:

     
    Última edição: 31 de Julho de 2008
  18. candycane

    candycane Power Member

    o meu sistema de login ta feito...

    ta aki nesta parte:

    PHP:
     
     $user 
    mysql_prep($_POST['txt_admin']);
     
    $pass sha1(mysql_prep($_POST['txt_admin_pass']));
     
     
    $sql "SELECT username, nivel, password, nome
        FROM login
        WHERE username='"
    .$user."' AND password='"$pass ."' AND nivel='admin' ";
     
          
     
    $resultado mysql_query($sql$ligacao);  
     
    $linhas mysql_num_rows($resultado); 
     
    $dados mysql_fetch_assoc($resultado);
     
     
     
  19. hostmake

    hostmake Power Member


    PHP:
     $user mysql_prep($_POST['txt_admin']);
     
    $pass sha1(mysql_prep($_POST['txt_admin_pass']));
     
     
    $sql "SELECT username, nivel, password, nome
        FROM login
        WHERE username='"
    .$user."' AND password='"$pass ."' AND nivel='admin' ";
     
          
     
    $resultado mysql_query($sql$ligacao);  
     
    $linhas mysql_num_rows($resultado); 
     
    $dados mysql_fetch_assoc($resultado);  

    O que é que interessa ter ou não ter cookies, se tu só lés POST?

    Eis a estrutura que a página tem que ter:


    PHP:
    <?php
    session_start
    ();
    //fazer os includes que quiseres, desde que não façam output de HTML

    //ir buscar as cookies, se tiveres cookies atribuires as cookies a uma variavel qualquer
    if ($_COOKIE......) {
            
    $user $_COOKIE......

    // verificar se ha SESSION
    }

    if (
    $_SESSION.......) {
            if (
    $user != $_SESS..... AND $_COOKIE....<>"")
                       echo 
    "Erro de seguranca, cookie e sessao diferente";
    //se nao houver session, ver se ha post
    } elseif ($_POST........) {
          
    $user $_POST.........
    }


    //Codigo SQL para ver se o login é valido


    //OUTPUT DE HTML

    ?>
     
    Última edição: 31 de Julho de 2008
  20. candycane

    candycane Power Member

    resecrevi o script, mas mesmo assim n encaminha se o existir o cooke.. ja vi k eles existem :(
    o meu include e require_onde n tem nenhum output, so funçoes.

    PHP:
     
    <?php
     session_start
    ();
     include(
    "../includes/database.php");
     require_once(
    "../includes/funcoes.php");
     
     
    // verificar se o user quis ser lembrado
     
    if((isset($_COOKIE['cookname'])) && (isset($_COOKIE['cookpass'])))
     {
        
    $user $_COOKIE['cookname'];
        
    $pass $_COOKIE['cookpass'];  
        } 
     elseif(isset(
    $_SESSION['username']) && isset($_SESSION['password']))
     {
      if((
    $_SESSION['username'] != $_COOKIE['cookname']) && ($_SESSION['password'] != $_COOKIE['cookpass']))
      {
       
    mostrar_formulario();
      }
     }
     elseif(isset(
    $_POST['txt_admin']) && isset($_POST['txt_admin_pass']))
     {
      
    $user mysql_prep($_POST['txt_admin']);
      
    $pass sha1(mysql_prep($_POST['txt_admin_pass']));
     }
     
     
    $sql "SELECT username, nivel, password, nome
        FROM login
        WHERE username='"
    .$user."' AND password='"$pass ."' AND nivel='admin' ";
     
          
     
    $resultado mysql_query($sql$ligacao);  
     
    $linhas mysql_num_rows($resultado); 
     
    $dados mysql_fetch_assoc($resultado);
     
     
     if(
    $linhas == 1)
     {
      
    $_SESSION['username'] = $user
      
    $_SESSION['password'] = $pass
      
    $_SESSION['nivel'] = $dados['nivel'];
      
    $_SESSION['nome'] = $dados['nome'];
      
      
    //cookies para opçao de checkbox lembar-me
      
    if($_POST['check_lembrar'])
      {
       
    setcookie("cookname"$_SESSION['username'], time()+60*60*24*100"/");
       
    setcookie("cookpass"$_SESSION['password'], time()+60*60*24*100"/");   
      }
       
      
    header ("Location: index.php");
      exit();
     }
     
     
    ?>
     

    o que eu kero é que qd alguem faz o login a 1º vez e selecione a opçao lembra-me, que n tenho k fazer o login sempre que va a uma area restrita...

    Como ha aki no forum, tenho o login sempre efectuado...
     

Partilhar esta Página