<?php
$usa = new UserSession();
// get status
echo $usa->id.' '.$usa->name.' '.$usa->level.'<br />';
// login + status
$name = 'xxxxx'; $pass = 'yyyyy'; $remember = true;
$usa->doLogin($name, $pass, $remember);
echo $usa->id.' '.$usa->name.' '.$usa->level.'<br />';
// logout + status
$usa->doLogout();
echo $usa->id.' '.$usa->name.' '.$usa->level.'<br />';
exit();
?>
I am working with a user session class.
For handling user session and login cookies.
The script above is for testing login and logout with cookie.
Here is my setcookie line.
$code = 40 chars string, SHA1 hash
$this->cooktime = 3600 (1 hour)
setcookie($this->cookname, $code, time()+$this->cooktime);
First I tried this function for delete cookie:
private function delCookie(){
if(isset($_COOKIE[$this->cookname])){
setcookie($this->cookname, '', time()-3600);
unset($_COOKIE[$this->cookname]);
}
return true;
}
This is very much standard. Used in many codes I have seen.
But every second time I refresh my testscript
it does not work to keep the user logged out!
It kinda toggles the logged in/out status of user .......
So, I have tried to see if I could come up with delete cookie function, that works 100%.
This is what I have found works:
private function delCookie(){
if(isset($_COOKIE[$this->cookname])){
setcookie($this->cookname, '', time()-3600);
setcookie($this->cookname); //added line to ensure reset cookie
unset($_COOKIE[$this->cookname]);
}
return true;
}
Can somebody explain why I have to
setcookie() two times, in order for it to work ..... ???
🙂