Jump to content
Fórum Script Brasil
  • 0

Como Controlar Login Por Cookie


kuroi
 Share

Question

tenho um problema serio. se o cara loga no meu site e seleciona a opcao de logar automaticamente, eu gravo o id dele no cookie. ai quando ele acessar o site novamente eu leio o cookie e logo com o usuario que estiver gravado.

mas ai que ta o problema, eu fui na pasta Documents And Settings\Cookies, abri o cookie do meu site e alterei o cookie na mao, colocando o id de um segundo usuario. assim, quando abro o site de novo ele vai logar com o outro usuario. deste modo qualquer um pode logar com o login de qualquer um sem precisar da senha.

como fazer pra contornar isso?? talvez se eu criptografasse o login, alguma coisa assim, eu pudesse resolver, mas queria saber como isso é feito normalmente.

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Costumo fazer desta forma: uso um array contendo os dados do usuário, como ID, login e senha (codificada em MD5). Usando serialize(), transformo esse array em string, podendo salvá-lo num cookie. Para resgatar o valor do cookie, uso unserialize() e, em seguida, faço a verificação no banco de dados, certificando-me de que os usuário e senha do cookie coincidem com os salvos no banco.

Veja:

http://forum.idone.com.br/index.php?showtopic=992

Isso evita salvar um cookie para cada informação do usuário, além de manter a segurança do sistema. ;)

Abraços,

Beraldo

Link to comment
Share on other sites

  • 0

Teoricamente não há como reverter uma string codificada em MD5, mas dizem as más linguas que há pessoas tentando decodificar hashes md5 com força bruta (semelhantemente ao que fizeram com a chave de registro do windows vista, talvez). Apesar disso, creio que MD5 ainda seja a maneira mais segura de armazenar as senhas.

Link to comment
Share on other sites

  • 0

a valeu. um problema aqui com o unserialize:

aqui eu gravo o cookie, normalmente:

$a[0] = $ID; $a[1] = md5($Login); $a[2] = $Senha;
            $cookie = serialize($a);

            setcookie("login", $cookie, time() + 45000);[/code] aqui é onde vou ler:
[code]$a = unserialize($_COOKIE["login"]);

        echo $_COOKIE["login"] . "<br/ >";
        echo $a[0] . "<br />" . $a[1] . "<br />" . $a[2] . "<br />";
pelo que parece ele serializa normal, o echo do $_COOKIE["login"] retorna a:3:{i:0;s:1:\"1\";i:1;s:32:\"9135d8523ad3da99d8a4eb83afac13d1\";i:2;s:32:\"c4ca4238a0b923820dcc509a6f75849b\";} mas o echo do $a volta em branco pra todos os indices. o codigo html que volta vem assim:
a:3:{i:0;s:1:\"1\";i:1;s:32:\"9135d8523ad3da99d8a4eb83afac13d1\";i:2;s:32:\"c4ca4238a0b923820dcc509a6f75849b\";}<br /><br /><br /><br />
tem uma ideia do que pode ser?? EDITADO: resolvido, o problema é que ele poe as barrinhas antes das aspas. resolvi assim:
$c = str_replace("\\" . chr(34), chr(34), $_COOKIE["login"]);
$a = unserialize($c);[/code]

valeu pela ajuda.

Edited by kuroi
Link to comment
Share on other sites

  • 0

Opa.. melhor do que isso: use stripslashes(). ;)

Mas só será necessário usar se magic_quotes_gpc, no php.ini, estiver ativado (essa diretiva não existirá no PHP 6), então é melhor fazer isto:

$dados = (get_magic_quotes_gpc()) ? unserialize(stripslashes($_COOKIE['dados'])) : unserialize($_COOKIE['dados']);

;)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.6k
×
×
  • Create New...