时间:2021-07-01 10:21:17 帮助过:35人阅读
//验证用户名和密码成功后
$_SESSION['userinfo'] = [
'uid' => 123,
'username' => 'testuser'
];
PHP中有cookie相关的函数, 用户登录成功的时候,可能有如下的语句:function set_cookie($data,$path = '/',$time = 0,$doma = NULL)
{
if(!is_array($data))
{
$para = func_get_args();
$data = array($para[0] => $para[1]);
$path = isset($para[2]) ? $para[2] : '/';
$time = isset($para[3]) ? $para[3] : 0;
$doma = isset($para[4]) ? $para[4] : NULL;
}
if(is_int($path))
{
$time = $path;
$path = '/';
}
if(is_string($time))
{
$doma = $time;
$time = 0;
}
$time = $time == 0 ? $time : time()+$time;
foreach($data as $key => $value)
{
if(!is_array($value))
{
if(strpos($key,'.') === FALSE)
{
if(isset($_COOKIE[$key]))
{
if(is_array($_COOKIE[$key]))
{
$cookie_str = http_build_query(array($key => $_COOKIE[$key]));
$cookie_arr = explode('&',$cookie_str);
foreach($cookie_arr as $cookie)
{
$a_cookie = explode('=',$cookie);
setcookie(urldecode($a_cookie[0]),NULL,-1,$path,$doma);
}
$_COOKIE[$key] = NULL;
}
}
setcookie($key,$value,$time,$path,$doma);
$_COOKIE[$key] = $value;
}
else
{
$cop = &$_COOKIE;
$cox = substr_count($key,'.');
foreach(explode('.',$key) as $ckk => $ckey)
{
if($ckk > 0)
{
$cookie_key .= '['.$ckey.']';
}
else
{
$cookie_key = $ckey;
}
if($ckk < $cox)
{
if(isset($cop[$ckey]))
{
if(!is_array($cop[$ckey]))
{
setcookie($cookie_key,NULL,-1,$path,$doma);
$cop[$ckey] = NULL;
}
}
else
{
$cop[$ckey] = NULL;
}
$cop = &$cop[$ckey];
}
else
{
if(isset($cop[$ckey]))
{
if(is_array($cop[$ckey]))
{
$cookie_str = http_build_query(array($cookie_key => $cop[$ckey]));
$cookie_arr = explode('&',$cookie_str);
foreach($cookie_arr as $cookie)
{
$a_cookie = explode('=',$cookie);
setcookie(urldecode($a_cookie[0]),NULL,-1,$path,$doma);
}
$cop[$ckey] = NULL;
}
}
else
{
$cop[$ckey] = NULL;
}
$cop = &$cop[$ckey];
}
}
setcookie($cookie_key,$value,$time,$path,$doma);
$cop = $value;
}
}
else
{
$x_cookie_str = http_build_query($value);
$x_cookie_arr = explode('&',$x_cookie_str);
foreach($x_cookie_arr as $x_cookie)
{
$a_cookie = explode('=',$x_cookie);
if(isset($a_cookie[1]))
{
set_cookie($key.'.'.str_replace(array('[',']'),array('.',''),urldecode($a_cookie[0])),urldecode($a_cookie[1]),$time,$path,$doma);
}
}
}
}
}
function cookie($key = NULL,$def = FALSE)
{
if(!empty($key))
{
if(strpos($key,'.') === FALSE)
{
if(isset($_COOKIE[$key]))
{
return $_COOKIE[$key];
}
else
{
return $def;
}
}
else
{
$cop = &$_COOKIE;
foreach(explode('.',$key) as $ckey)
{
if(isset($cop[$ckey]))
{
$cop = &$cop[$ckey];
}
else
{
return $def;
}
}
return $cop;
}
}
else
{
return $_COOKIE;
}
}
function unset_cookie($key = NULL,$path = '/',$doma = NULL)
{
if(!empty($key))
{
if(strpos($key,'.') === FALSE)
{
if(isset($_COOKIE[$key]))
{
if(!is_array($_COOKIE[$key]))
{
setcookie($key,NULL,-1,$path,$doma);
}
else
{
$cookie_str = http_build_query(array($key => $_COOKIE[$key]));
$cookie_arr = explode('&',$cookie_str);
foreach($cookie_arr as $cookie)
{
$a_cookie = explode('=',$cookie);
setcookie(urldecode($a_cookie[0]),NULL,-1,$path,$doma);
}
}
unset($_COOKIE[$key]);
}
}
else
{
$cop = &$_COOKIE;
$ckeys = explode('.',$key);
$pop_ckey = array_pop($ckeys);
foreach($ckeys as $ckk => $ckey)
{
if($ckk > 0)
{
$cookie_key .= '['.$ckey.']';
}
else
{
$cookie_key = $ckey;
}
if(isset($cop[$ckey]))
{
$cop = &$cop[$ckey];
}
else
{
return;
}
}
if(isset($cop[$pop_ckey]))
{
if(!is_array($cop[$pop_ckey]))
{
setcookie($cookie_key.'['.$pop_ckey.']',NULL,-1,$path,$doma);
}
else
{
$cookie_str = http_build_query(array($cookie_key.'['.$pop_ckey.']' => $cop[$pop_ckey]));
$cookie_arr = explode('&',$cookie_str);
foreach($cookie_arr as $cookie)
{
$a_cookie = explode('=',$cookie);
setcookie(urldecode($a_cookie[0]),NULL,-1,$path,$doma);
}
}
unset($cop[$pop_ckey]);
}
}
}
else
{
if(!empty($_COOKIE))
{
$cookie_str = http_build_query($_COOKIE);
$cookie_arr = explode('&',$cookie_str);
foreach($cookie_arr as $cookie)
{
$a_cookie = explode('=',$cookie);
setcookie(urldecode($a_cookie[0]),NULL,-1,$path,$doma);
}
$_COOKIE = array();
}
}
}
虽然cookie和session都可以实现题主所想要的功能,但是更推荐使用session。// 登录成功后记录登录信息
$_SESSION['loginStatus'] = array(
'username' => $username,
'status' => true,
'loginTime' = > time(),
);
.
.
.
// 判断session信息
if(empty($_SESSION['loginStatus']['status']) || !$_SESSION['loginStatus']['status']) {
// 引导到登录页
} else {
// 加载用户信息
}
cookie和session
我记得韩顺平老师的视频里面,有一块专门教写登录模块的教程。