Ir para conteúdo

POWERED BY:

Arquivado

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

TheMasterFlash

[Resolvido] Cookie e Session

Recommended Posts

Ae pessoal tudo bem?

 

tou aqui com um problema que é o seguinte fiz um sistema de login que tem a opção "Manter Ligado" esta a funcionar bem e tudo o problema é quando o user ta logado, eu tenho isto como codigo...

 

<?php
if(isset($_SESSION["u_nick"])){
?>

Bem vindo.

<?php
} else {
?>

PAGINA INICIAL

<?php
}
?>

 

o problema deste codigo é quando a session terminar vai aparecer a pagina inicial e o cookie ja não serve de nada, alguém me diz como faço para aparecer para sempre caso o user tenha selecionado a opção "Manter Ligado"...

 

Cumps

Compartilhar este post


Link para o post
Compartilhar em outros sites

Neste caso, ao invés de fazer uso de SESSION, utilize COOKIE.

As variáveis SESSION fecham assim que o navegador é fechado, ou seja, permanecem naquela sessão de atividade, ao contrário das variáveis COOKIE, onde você configura o tempo que elas devem manter-se ativas.

 

:seta: http://www.google.com.br/search?q=session+x+cookie+php&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:pt-BR:official&client=firefox-a

Compartilhar este post


Link para o post
Compartilhar em outros sites

A idéia é:

Quando a opção 'Manter Conectado' for marcada, você seta um cookie.

Quando for verificar a sessão, primeiramente verifique o cookie. Se o cookie existir, inicie a sessão com os dados do cookie...

Compartilhar este post


Link para o post
Compartilhar em outros sites

A idéia é:

Quando a opção 'Manter Conectado' for marcada, você seta um cookie.

Quando for verificar a sessão, primeiramente verifique o cookie. Se o cookie existir, inicie a sessão com os dados do cookie...

 

Henrique Barcelos e foi o que eu fiz e esta a funcionar...

if (!isset($_SESSION) || ($_POST['email']) || !isset($_POST['password'])) session_start(); 
$_SESSION['id'] = $resultado['id'];
$_SESSION['u_nick'] = $resultado['nick'];

if(isset($_POST["lembrar"])){                   
setcookie("user",  $cookieM, time()+60*60*24*7);                                     
}

o meu problema é o que indiquei em cima =)

quando a session terminar vai aparecer a pagina inicial e o cookie ja não serve de nada

 

EDIT:

 

fiz assim

 

<?php
if(($_COOKIE['user']=="") && ($_SESSION['u_nick']=="")){
?>

Bem vindo.

<?php
}else{
?>

PAGINA INICIAL

<?php
}
?>

 

agora tenho um problema se eu selecionar a opção "manter ligado" ele vai criar o cookie e isso tudo agora o problema é se eu apagar o cookie do navegador e actualizar a pagina vou continuar logado o que eu queria era ao eliminar o cookie a session tmb seria eliminada...

Compartilhar este post


Link para o post
Compartilhar em outros sites

ja funciona obrigado :natalbiggrin:

 

Depareime agora com a seguinte situação, eliminei todos os users da base de dados depois cadastrei um e quando vou a fazer login não da :s

 

<?php
include('includes/config.php');

$email=$_POST['email'];
$password=$_POST['password'];
$lembrar=$_POST['lembrar'];

if (!empty($_POST) && (empty($_POST['email']) || empty($_POST['password']))) {
echo "TODOS OS CAMPOS SÃO OBRIGATORIOS! <meta http-equiv='refresh' content='1; url=index.php'>"; exit;
}

if($email!="" && $password!=""){
$link = mysql_connect($server,$user,$pass) OR die ("NAO CONSEGUE LIGAR A BASE DE DADOS");
mysql_select_db($db, $link) or die ("NAO CONSEGUE CONECTAR A BASE DE DADOS");
$sql = "SELECT `pass`,`cookie`,`id`,`nick` FROM `users` WHERE email=\"$email\"";
$query=mysql_query($sql,$link);
$res=mysql_fetch_row($query);
if($res[0]==$password){
$cookieM=$res[1];
$resultado=mysql_fetch_assoc($query);

if(!isset($_SESSION)) session_start();
$_SESSION['id'] = $resultado['id'];
$_SESSION['u_nick'] = $resultado['nick'];

if(isset($_POST["lembrar"])){                   
setcookie("user",  $cookieM, time()+60*60*24*7);                                     
}

header("Location: index.php?id={$_SESSION['id']}"); exit;
} 
else {
echo "USER OU PASSWORD INCORRECTOS! <meta http-equiv='refresh' content='1; url=index.php'>"; exit;
}
mysql_close($link);
}
?>

 

ele não esta a conseguir ir buscar os dados da session o link fica assim

index.php?id=

ele não pega o id portanto se não pega o id também não pega o "u_nick" e não entra, mas se eu marcar a opção "Manter Ligado" ja entra mas o link fica sempre

index.php?id=

...

 

Cumps

 

alguém? :x

Compartilhar este post


Link para o post
Compartilhar em outros sites

Leitura:

http://henriquebarcelos.in/blog/2011/11/20/sessoes-em-php-erros-comuns/

 

No artigo eu abordo esse problema que você está tendo, mas leia o artigo inteiro para não se perder...

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.