php js登录,php+js实现单点登录
php+js實現單點登錄
2020年08月14日 00:45:23閱讀數:110
登錄信息表
DROP TABLE IF EXISTS `fly_admin_login_info`;
CREATE TABLE `fly_admin_login_info` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`admin_id` int(11) unsigned DEFAULT NULL,
`email` varchar(80) DEFAULT NULL,
`create_time` int(11) unsigned DEFAULT NULL,
`update_time` int(11) unsigned DEFAULT NULL,
`is_login` tinyint(4) unsigned DEFAULT NULL COMMENT '1-已登陸,2-未登錄',
`login_time` int(11) unsigned DEFAULT NULL COMMENT '登錄時間',
`session_id` varchar(150) DEFAULT NULL COMMENT '登錄session_id',
`login_ip` varchar(30) DEFAULT NULL COMMENT '登錄IP',
`os` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4;
// 記錄登錄信息
$login_info_data = [
"session_id" => $admin["session_id"],
"login_time" => $admin["login_time"],
"is_login"? ?=> 1,
"email"? ? ? => $admin["email"],
"os"? ? ? ? ?=> Request::param("os"),
"login_ip"? ?=> Request::ip(),
];
if (Db::table('fly_admin_login_info')->where(["admin_id" => $admin["id"]])->find())
{
$login_info_data["update_time"] =? $admin["login_time"];
Db::table('fly_admin_login_info')->where(["admin_id" => $admin["id"]])->update($login_info_data);
}
else
{
$login_info_data["create_time"] =? $admin["login_time"];
$login_info_data["admin_id"]? ? =? $admin["id"];
Db::table('fly_admin_login_info')->insert($login_info_data);
}
/**
*? 檢測是否當前登錄是否有效 建議獨立封裝配合中間件使用
*
*/
public function is_login_validity(Request $request)
{
$adminLogin = session('adminLogin');
if (empty($adminLogin))
{
echo json_encode(["status" => false, "info" => "登錄失效,請重新登錄!", "url" => url('admin/Index/login')]); exit();
}
else
{
$login_info = Db::table('fly_admin_login_info')->where(["admin_id" => $adminLogin["id"]])->find();
if (isset($adminLogin["session_id"]))
{
if ($login_info["session_id"] === $adminLogin["session_id"])
{
echo json_encode(["status" => true]);
}
else
{
session('adminLogin', null);
echo json_encode(["status" => false, "info" => "您的賬號在IP:". $login_info["login_ip"] . "登錄,如果不是您本人登錄,則您的密碼可能已經泄露,請及時修改密碼 !", "url" => url('admin/Index/login')]); exit();
}
}
else
{
// 兼容從前
// 記錄登錄信息
$login_info_data = [
"session_id" => $adminLogin["session_id"],
"login_time" => $adminLogin["login_time"],
"is_login"? ?=> 1,
"email"? ? ? => $adminLogin["email"],
"login_ip"? ?=> Request::ip(),
];
if (Db::table('fly_admin_login_info')->where(["admin_id" => $adminLogin["id"]])->find())
{
$login_info_data["update_time"] =? $adminLogin["login_time"];
Db::table('fly_admin_login_info')->where(["admin_id" => $adminLogin["id"]])->update($login_info_data);
}
else
{
$login_info_data["create_time"] =? $adminLogin["login_time"];
$login_info_data["admin_id"]? ? =? $adminLogin["id"];
Db::table('fly_admin_login_info')->insert($login_info_data);
}
echo json_encode(["status" => true]);
}
}
}
js 一直跑 該環境屬于iframe環境
var is_login_validity_msg = null;
xadmin.admin_login = setInterval(function(){
$.post("is_login_validity",{token:"token_@$%!"},function(res){
if (res.status === false)
{
if (!parent.is_login_validity_msg)
{
parent.is_login_validity_msg = res.info;
}
res.info = parent.is_login_validity_msg ? parent.is_login_validity_msg : res.info;
clearInterval(xadmin.admin_login);
layer.msg(res.info, {icon: 5, time: 1000*60*2}, function()
{
parent.location.reload();
window.location.href = res.url;
});
}
},'json');
},3000);
---------------------
本文著作權歸作者所有。
商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
來源地址:https://www.php.cn/blog/detail/23691.html
來源:php中文網(www.php.cn)
? 版權聲明:轉載請附上博文鏈接!
全部評論
文明上網理性發言,請遵守新聞評論服務協議0條評論
立即提交
總結
以上是生活随笔為你收集整理的php js登录,php+js实现单点登录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android给数组添加新元素_重磅!超
- 下一篇: 云片短信php接口_php与阿里云短信接