PHP网站中记住我功能实现
PHP中有cookie相关的函数, 用户登录成功的时候,可能有如下的语句:
setcookie(“user”, “user1”, time()+3600);
判断用户是否登录的时候,有类似这样的语句:
if (isset($_COOKIE[“user”])){
echo “已经登录”;
}
用户退出的时候,有类似这样的语句:
setcookie(“user”, “”, time()-3600);
如果用户登录后一直没点退出按钮,3600秒之后,cookie也会失效。
如果想让用户保持足够长的时间 time()+3600*24*365 就是登录后一年内都有效。
另:
<code>
function
checklogin(){
if
(emptyempty(
$_SESSION
[
'user_info'
])){
// 检查一下session是不是为空
if
(emptyempty(
$_COOKIE
[
'username'
]) || emptyempty(
$_COOKIE
[
'password'
])){
// 如果session为空,并且用户没有选择记录登录状
header(”location:login.php?req_url=”.
$_SERVER
[
'REQUEST_URI'
]);
// 转到登录页面,记录请求的url,登录后跳转过去,用户体验好。
}
else
{
// 用户选择了记住登录状态
$user
= getUserInfo(
$_COOKIE
[
'username'
],
$_COOKIE
[
'password'
]);
// 去取用户的个人资料
if
(emptyempty(
$user
)){
// 用户名密码不对没到取到信息,转到登录页面
header(”location:login.php?req_url=”.
$_SERVER
[
'REQUEST_URI'
]);
}
else
{
$_SESSION
[
'user_info'
] =
$user
;
// 用户名和密码对了,把用户的个人资料放到session里面
}
}
}
}
//检查用户是否登录
function
checklogin(){
if
(
empty
(
$_SESSION
[
'user_info'
])){
//检查一下session是不是为空
if
(
empty
(
$_COOKIE
[
'username'
]) ||
empty
(
$_COOKIE
[
'password'
])){
//如果session为空,并且用户没有选择记录登录状
header(”location:login.php?req_url=”.
$_SERVER
[
'REQUEST_URI'
]);
//转到登录页面,记录请求的url,登录后跳转过去,用户体验好。
}
else
{
//用户选择了记住登录状态
$user
= getUserInfo(
$_COOKIE
[
'username'
],
$_COOKIE
[
'password'
]);
//去取用户的个人资料
if
(
empty
(
$user
)){
//用户名密码不对没到取到信息,转到登录页面
header(”location:login.php?req_url=”.
$_SERVER
[
'REQUEST_URI'
]);
}
else
{
$_SESSION
[
'user_info'
] =
$user
;
//用户名和密码对了,把用户的个人资料放到session里面
}
}
}
}
</code>