TPshop学习(5)单点登录

学习内容:
https://www.kancloud.cn/tpshop/thinkphp5/282330

原理和效果。
现有两个网站:
登入:
aaa.ccc登录,成功后,到ok页面
同时,传入用户名和密码到ok页面
通过ajax把用户名和密码,传到bbb.ccc网站的login。
这时打开bbb.ccc的ok页面。
看到显示,已登录 。

退出:
在aaa.ccc的ok页面,点退出,就回到登录页面。
此时,ajax把空用户名,传到bbb.ccc网站的logout。
这时打开bbb.ccc的ok页面。
看到显示,未登录。

代码如下:
aaa.ccc 网站

appliction/index/controller/Index4.php

<?php
namespace app\index\controller;
use think\Controller;

class Index4 extends Controller
{
    public function index(){
        if(session('uid')){
            $this->redirect('ok');
        }
        return $this->fetch();
    }

    public function login(){
        if(empty($_POST['uid'])||$_POST['uid']<1){
                $this->redirect('index');
        }else{
            session('uid',$_POST['uid']);
            session('password',$_POST['password']);
            $this->redirect('ok');
        }
    }


    public function logout(){
        print_r('login');
        session('uid',null);

        $this->redirect('index');
    }

    public function ok(){
        $uid        = empty(session('uid'))?0:session('uid');
        $password   = empty(session('password'))?0:session('password');
        $data       = array(
            'uid'=>$uid,
            'password'=>$password
        );
        $this->assign($data);
        return $this->fetch();
    }

}

模板.
application/index/view/index4/index.html


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>aaa网站登录</title>
</head>
<body>
<form method="post" action="{:url('login')}">
    用户ID<input name="uid" id="uid" value=""/>
    密码<input name="password" id="password" value=""/>
    <input type="submit" value="提交"/>
</form>

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>


<script type="text/javascript">
        var uid = $.trim($("#uid").val());
        var password = $.trim($("#password").val());
        $.ajax({
            type:'get',
            url:'http://bbb.ccc/public/index/api/logout?uid='+uid,
            dataType:'jsonp',
            jsonp:"jsoncallback",
            success:function(data){
                alert('uid:'+data.uid+',password:'+data.password);
            },
            error:function(){
                alert('fail');
            }
        });


</script>

</body>
</html>

application/index/view/index4/ok.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>aaa网站登录后ok页</title>
</head>
<body>
<h1>aaa 站 登录成功 uid:{$uid}</h1>
<h2><a href="{:url('index/index4/logout')}">注销</a></h2>

<input type='hidden' id="uid" value="{$uid}"/>
<input id="password" value="{$password}"/>

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>

<script type="text/javascript">
    $(function(){
        var uid = $("#uid").val();
        var password = $("#password").val();
        $.ajax({
            type:"get",
            url:"http://bbb.ccc/public/index/api/login?uid="+uid+'&password='+password,
            dataType:"jsonp",
            jsonp:"jsoncallback",
            success:function(data){
                alert('uid:'+data.uid+',password:'+data.password);
            },
            error:function(){
                alert('fail');
            }

            });


    });
</script>
</body>
</html>

bbb网站

application/index/controller/Api.php

<?php

namespace app\index\controller;
use think\Controller;
class Api extends Controller
{
    public function login(){

       session('uid',$_GET['uid']);
       session('password',$_GET['password']);
       $this->redirect('ok');
    }

    public function logout(){
        session(null);
        $this->redirect('ok');
    }

    public function ok(){
        $uid        = empty(session('uid'))?0:session('uid');
        $password   = empty(session('password'))?0:session('password');
        $data       = array(
            'uid'=>$uid,
            'password'=>$password
        );
        $this->assign($data);
        return $this->fetch();
    }
}

application/index/view/api/ok.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>bbb 网页登录状态显示页</title>
</head>
<body>
    {if condition="$uid gt 0"}
        <h1>bbb 网站 登录成功 uid:{$uid}</h1>
    {else}
        <h1>bbb 网站 未登录</h1>
    {/if}

</body>
</html>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值