单点登录->请求登录简单原理
www.testaaa.com
user.php
<?php
session_start();
if(isset($_SESSION['name'])){
echo $_SESSION['name'];
}else{
$token=$_GET['token'];
// echo $token;
// die;
if(!empty($token)){
$data=file_get_contents('http://www.testsso.com/gettoken.php?token='.$token);
// echo 'http://www.testsso.com/gettoken.php?token='.$token;
// print_r($data);
// exit;
$user_info=json_decode($data,true);
if($user_info['code']==0){
$_SESSION['name']=$user_info['result']['name'];
}
}else{
$url='http://www.testaaa.com/user.php';
header('location: http://www.testsso.com/login.php?return_url='.urlencode($url));
exit;
}
echo $_SESSION['name'];
}
?>
www.testbbb.com
user.php
<?php
session_start();
if(isset($_SESSION['name'])){
echo $_SESSION['name'];
}else{
$token=$_GET['token'];
if(!empty($token)){
$data=file_get_contents('http://www.testsso.com/gettoken.php?token='.$token);
// echo 'http://www.testsso.com/gettoken.php?token='.$token;
// print_r($data);exit;
$user_info=json_decode($data,true);
if($user_info['code']==0){
$_SESSION['name']=$user_info['result']['name'];
}
}else{
$url='http://www.testbbb.com/user.php';
// echo $url;die;
header('location: http://www.testsso.com/login.php?return_url='.urlencode($url));
exit;
}
echo $_SESSION['name'];
}
?>
www.testsso.php
登录页面:login.php
<?php
session_start();
if(isset($_SESSION['username'])){
$token='1234567';
$url=$_GET['return_url'];
// echo $url;die;
header('location:'.$url.'?token='.$token);
exit;
}
if(!empty($_POST)){
if($_POST['name']=='zhangsan'&&$_POST['password']=='123'){
// echo 'success';exit;
$url=$_POST['url'];
$_SESSION['uid']=1;
$_SESSION['username']='zhangsan';
$token='1234567';
header("location:$url?token=$token");
exit;
}
}else{
$return_url=$_GET['return_url'];
?>
<form action="login.php" method="post">
<input type="hidden" name="url" value="<?=$return_url?>">
name: <input type="text" name="name"><br>
password: <input type="text" name="password"><br>
<input type="submit" value="submit">
</form>
<?php
}
?>
验证token:gettoken.php
<?php
$token=$_GET['token'];
$tokens=[
'1234567'=>[
'name'=>'zhangsan',
'id'=>'1'
],
];
if(isset($tokens[$token])){
echo json_encode([
'code'=>0,
'msg'=>'ok',
'result'=>$tokens[$token]
]);
}else{
echo json_encode([
'code'=>1,
'msg'=>'error'
]);
}
?>