Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

DARKSx2

[Resolvido] Cookies nao estao apagando.

Recommended Posts

Pessoal, o meu problema é o seguinte:

Estou criando um sisteminha de cadastro/login...

Quando a pessoa faz o login, é exibido "Você esta logado $login";

 

Segue o codigo da pagina:

<?php require_once("config.php"); ?>
<html>
<head>
<title>Untitled Document</title>
</head>
<body>
<p><strong>Seja bem vindo ao site.</strong></p>
<form id="form1" name="form1" method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
  <table width="649" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td width="183" height="43"><a href="cadastro.php">Cadastre-se</a></td>
      <td width="44">Login:</td>
      <td width="152"><label>
        <input type="text" name="login" id="login" />
      </label></td>
      <td width="56"><div align="right">Senha</div></td>
      <td width="158"><label>
        <div align="right">
          <input type="text" name="senha" id="senha" />
        </div>
      </label></td>
      <td width="56"><label>
        <div align="right">
          <input type="submit" name="entrar" id="entrar" value="Entrar" />
        </div>
      </label></td>
    </tr>
  </table>
</form>
<?php
if (isset($_POST['entrar'])) {
$login = $_POST['login'];
$senha = $_POST['senha'];
$resultado = mysql_query("SELECT * FROM usuarios where user_login='$login'");
$linhas = mysql_num_rows ($resultado);
if($linhas == 0) {
echo("Usuario nao encontrado");
}else {
if ($senha != mysql_result($resultado, 0, "user_senha")) {
echo("A senha está incorreta!");
}else {
setcookie("login", $login);
setcookie("senha", $senha);
$usuario = $_COOKIE['login'];
echo("Voce esta logado $usuario");
echo("<a href='logout.php'>Sair</a>");
}
}
}
?>
<p><strong></strong></p>
</body>
</html>

& pag logout.php:

<?php
setcookie("usuario"); 
setcookie("senha");
$_COOKIE['login'] = "";
header ("Location: index.php");
?>

Mas quando a pessoa clica em sair... some o "Voce esta logado $login", até ai tudo bem... mas se essa pessoa digitar outro login e senha, clicar ENTRAR, vai aparecer o nome anterior... e se sair e entrar com uma terceira conta, aparecera o nick da segunda...

 

Alguem pode ajudar a solucionar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, quando você seta um cookie é necessário dar um refresh na página para poder acessar os dados dele.

Eu te aconselho usar session para um sistema de login mais seguro.

 

Para resolver o problema, você poderia exibir o login digitado ao invés do cookie salvo, assim:

 

echo("Voce esta logado $login");

Desse método seria exibido o login que a pessoa digitou.

 

Seu logout tbm está errado:

 

Aqui você ta setando mais 2 cookies desnecessáriamente.

 

setcookie("usuario"); 
setcookie("senha");

Isso só seta a variável no momento da execução, o cookie não terá seu valor alterado.

 

$_COOKIE['login'] = "";

O certo seria:

 

<?php
setcookie('login', '', time() - 60); 
header('Location: index.php');
?>

Espero ter ajudado, abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na pagina logout.php coloque esse codigo

unset($_SESSION['usuario']);
unset($_SESSION['senha']);
session_destroy();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hum, session é mais seguro para um sistema de login? Pode me explicar o por que? Estou aprendendo agora..

 

Edit:

Encontrei um topico sobre isso... http://forum.imasters.com.br/index.php?/topic/380704-o-que-e-mais-seguro-sessions-ou-cookies/

 

Vou começar a trabalhar com SESSION entao..

No lugar de:

setcookie("login", $login);
setcookie("senha", $senha);
Eu coloco:

$_SESSION['login'] = $login;
$_SESSION['senha'] = $senha;
Correto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Raphael,

 

Basicamente cookies são armazenados no cliente enquanto os dados de uma session são armazenadas em disco no servidor.

 

Isso significa que, ao gravar um cookie no cliente, você estará permitindo que o usuário, utilizando ferramentas como firebug, possam modificar esses dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, problema resolvido, muito obrigado a todos.

 

Codigo da minha pag:

<?php 
require_once("config.php"); 
if (isset($_POST['entrar'])) {
$login = $_POST['login'];
$senha = $_POST['senha'];
$resultado = mysql_query("SELECT * FROM usuarios where user_login='$login'");
$linhas = mysql_num_rows ($resultado);
if($linhas == 0) {
echo("Usuario não encontrado");
}else {
if ($senha != mysql_result($resultado, 0, "user_senha")) {
echo("A senha está incorreta!");
}else {
$emailuser = mysql_result($resultado, 0, "user_email");
$nomeuser  = mysql_result($resultado, 0, "user_nome");
session_start();
$_SESSION['login'] = $login;
$_SESSION['senha'] = $senha;
$_SESSION['email'] = $emailuser;
$_SESSION['nome']  = $nomeuser;
}
}
}
?>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<html>
<head>
<title>Página inicial do site</title>
</head>
<body>
<p><strong>Seja bem vindo ao site.</strong></p>
<?php if(isset($_SESSION['login'])) {
echo("Ola ");
echo $_SESSION['nome'];
echo ("<br>Você está logado com a conta:  ");
echo $_SESSION['login'];
echo("<br>Seu email é "); 
echo $_SESSION['email'];
echo("<br><a href='logout.php'>Sair</a>");
}else { ?>
<form id="form1" name="form1" method="post" action="<?php $_SERVER['PHP_SELF'] ?>">
  <table width="649" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td width="183" height="43"><a href="cadastro.php">Cadastre-se</a></td>
      <td width="44">Login:</td>
      <td width="152"><label>
        <input type="text" name="login" id="login" />
      </label></td>
      <td width="56"><div align="right">Senha</div></td>
      <td width="158"><label>
        <div align="right">
          <input type="text" name="senha" id="senha" />
        </div>
      </label></td>
      <td width="56"><label>
        <div align="right">
          <input type="submit" name="entrar" id="entrar" value="Entrar" />
        </div>
      </label></td>
    </tr>
  </table>
</form>
<?php } ?>
<p><strong></strong></p>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.