Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
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...
>
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...
o que eu queria era ao eliminar o cookie a session tmb seria eliminada...
if ( !isset( $_COOKIE[ 'user' ] ) ) unset( $_SESSION[ 'u_nick' ] );
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
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...
Prontos ta resolvido!
Obrigado Henrique Barcelos e Matheus Tavares ;)
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