学习内容:
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>