这篇文章主要介绍了 php 出现 web 系统多域名登录失败的解决方法, 针对同一顶级域名下的各子站出现登录失败的情况非常有用, 需要的朋友可以参考下
本文实例讲述了 php 出现 web 系统多域名登录失败的解决方法, 分享给大家供大家参考具体分析如下:
下面只是简单的逻辑结构, 对于正式的系统需要做具体的处理
这里需要注意的是: 加解密一定需要做安全验证但是这个方法也不够完美, 两个站点必须有相同一级域名; 另外这种完全基于 cookie 的方式, 安全性不够高
- function login()
- {$info = callloginserver(); // 访问登录服务器
- if(!empty($info)) // 登录成功了
- }
- // 用户没有登录, 则在本系统中登录并调用登录服务器接口
- function login() // 正常的登录
- {
- .......// 验证用户的合法性
- $_session['uid'] = $user_id;
- setcookie('sign', encrypt($pass9), '','/','the.com');
- }
先检查用户是否在登录系统中登录
- funtion sign()
- {
- $sign = $_cookie['sign'];
- if(!empty($sign))
- {
- $sign = decrypt($sign);
- ........../// 登录成功
- }
- }
用户没有登录, 则在本系统中登录并调用登录服务器接口
- function loging() // 本系统登录
- {
- .....// 登录成功
- callseverlogin();// 通知用户登录
- }
所有的站点共享一个登录系统; 当用户在其中的一个站点登录成功时, 该系统调用其他站点的登录接口, 完成用户在其他站点的登录, 同时设置相应的登录信息; 或者在用户登录时, 只在该系统保存用户登录信息, 当用户在其他站点登录时, 必须请求该系统接口, 获取用户是否登录的信息前一种方式的缺点是: 不管用户有没有使用其他站点, 那些站点都需要保存用户状态; 后一种方式就把所有的压力都转移到登录系统上面来而如果要实现用户退出的统一操作, 就需要站点调用登录系统的退出接口, 然后登录系统接口调用其他站点的退出接口; 或者设置一个标记, 如果这个标记不存在则标示用户退出, 此时只要把该标示清空即可, 其他站点发现该标示不存在就知道用户已经退出系统
这种处理方式需要在登录系统和个站点之间规定登录接口, 和注销接口通过这些接口, 各站点可以很方便的处理用户登录或退出
希望本文所述对大家的 PHP 程序设计有所帮助
来源: https://www.php1.cn/detail/php-573f2f6810.html