最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php的sso單點(diǎn)登錄實(shí)現(xiàn)方法

 更新時(shí)間:2015年01月08日 08:53:00   投稿:shichen2014  
這篇文章主要介紹了php的sso單點(diǎn)登錄實(shí)現(xiàn)方法,實(shí)例分析了sso單點(diǎn)登錄的原理與具體實(shí)施步驟,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了php的sso單點(diǎn)登錄實(shí)現(xiàn)方法。分享給大家供大家參考。具體分析如下:

這里詳細(xì)講到了幾點(diǎn):
1、點(diǎn)擊登錄跳轉(zhuǎn)到SSO登錄頁(yè)面并帶上當(dāng)前應(yīng)用的callback地址
2、登錄成功后生成COOKIE并將COOKIE傳給callback地址
3、callback地址接收SSO的COOKIE并設(shè)置在當(dāng)前域下再跳回到應(yīng)用1即完成登錄
4、再在應(yīng)用程序需要登錄的地方嵌入一個(gè)iframe用來(lái)實(shí)時(shí)檢測(cè)登錄狀態(tài),代碼如下:
index.php 應(yīng)用程序頁(yè)面:

復(fù)制代碼 代碼如下:
<?php 
header('Content-Type:text/html; charset=utf-8'); 
$sso_address = 'http://XXXX.com/sso/login.php'; //你SSO所在的域名 
$callback_address = 'http://'.$_SERVER['HTTP_HOST'] 
                    .str_replace('index.php','',$_SERVER['SCRIPT_NAME']) 
                    .'callback.php'; //callback地址用于回調(diào)設(shè)置cookie
 
if(isset($_COOKIE['sign'])){ 
    exit("歡迎您{$_COOKIE['sign']} <a href="login.php?logout">退出</a>"); 
}else{ 
    echo '您還未登錄 <a href="'.$sso_address.'?callback='.$callback_address.'">點(diǎn)此登錄</a>'; 

?>
<iframe src="<?php echo $sso_address ?>?callback=<?php echo $callback_address ?>" frameborder="0"  width="0" height="0"></iframe>

login.php SSO登錄頁(yè)面:
復(fù)制代碼 代碼如下:
<?php 
header('Content-Type:text/html; charset=utf-8'); 
if(isset($_GET['logout'])){ 
    setcookie('sign','',-300); 
    unset($_GET['logout']); 
    header('location:index.php'); 
}
 
if(isset($_POST['username']) && isset($_POST['password'])){ 
    setcookie('sign',$_POST['username'],0,''); 
    header("location:".$_POST['callback']."?sign={$_POST['username']}"); 
}
 
if(emptyempty($_COOKIE['sign'])){ 
?>
 
<form method="post"> 
<p>用戶名:<input type="text" name="username" /></p> 
<p>密  碼:<input type="password" name="password" /></p> 
<input type="hidden" name="callback" value="<?php echo $_GET['callback']; ?>" /> 
<input type="submit" value="登錄" /> 
</form>
 
 
<?php 
}else{ 
    $query = http_build_query($_COOKIE); 
    echo "系統(tǒng)檢測(cè)到您已登錄 {$_COOKIE['sign']} <a href="{$_GET['callback']}?{$query}">授權(quán)</a> <a href="?logout">退出</a>"; 

?>

callback.php 回調(diào)頁(yè)面用來(lái)設(shè)置跨域COOKIE:
復(fù)制代碼 代碼如下:
<?php 
header('Content-Type:text/html; charset=utf-8'); 
if(emptyempty($_GET)){ 
    exit('您還未登錄'); 
}else{ 
    foreach($_GET as $key=>$val){ 
        setcookie($key,$val,0,''); 
    } 
    header("location:index.php"); 
}
?>

connect.php 用來(lái)檢測(cè)登錄狀態(tài)的頁(yè)面,內(nèi)嵌在頁(yè)面的iframe中:
復(fù)制代碼 代碼如下:
<?php
header('Content-Type:text/html; charset=utf-8'); 
if(isset($_COOKIE['sign'])){ 
    $callback = urldecode($_GET['callback']);unset($_GET['callback']); 
    $query = http_build_query($_COOKIE); 
    $callback = $callback."?{$query}"; 
}else{
    exit; 

?>
<html><script type="text/javascript">top.location.href="<?php echo $callback; ?>";</script></html>

希望本文所述對(duì)大家的php程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • PHP Memcached應(yīng)用實(shí)現(xiàn)代碼

    PHP Memcached應(yīng)用實(shí)現(xiàn)代碼

    在很多場(chǎng)合,我們都會(huì)聽到 memcached 這個(gè)名字,但很多同學(xué)只是聽過(guò),并沒(méi)有用過(guò)或?qū)嶋H了解過(guò),只知道它是一個(gè)很不錯(cuò)的東東。這里簡(jiǎn)單介紹一下,memcached 是高效、快速的分布式內(nèi)存對(duì)象緩存系統(tǒng),主要用于加速 WEB 動(dòng)態(tài)應(yīng)用程序。
    2010-02-02
  • PHP 使用openssl 擴(kuò)展實(shí)現(xiàn)公鑰加密的方法

    PHP 使用openssl 擴(kuò)展實(shí)現(xiàn)公鑰加密的方法

    下面小編就為大家分享一篇PHP 使用openssl 擴(kuò)展實(shí)現(xiàn)公鑰加密的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • PHP實(shí)現(xiàn)惡意DDOS攻擊避免帶寬占用問(wèn)題方法

    PHP實(shí)現(xiàn)惡意DDOS攻擊避免帶寬占用問(wèn)題方法

    這篇文章主要介紹了PHP實(shí)現(xiàn)惡意DDOS攻擊避免帶寬占用問(wèn)題方法,本文介紹的是一個(gè)簡(jiǎn)單方法,需要的朋友可以參考下
    2015-05-05
  • PHP的魔術(shù)常量__METHOD__簡(jiǎn)介

    PHP的魔術(shù)常量__METHOD__簡(jiǎn)介

    這篇文章主要介紹了PHP的魔術(shù)常量__METHOD__簡(jiǎn)介,使用__METHOD__可以獲取類中的方法名稱,PHP5之后新增的魔術(shù)常量,需要的朋友可以參考下
    2014-07-07
  • PHP中數(shù)組的三種排序方法分享

    PHP中數(shù)組的三種排序方法分享

    PHP中數(shù)組的三種排序方法,主要包括冒泡排序法、選擇排序法、插入排序法,需要的朋友可以參考下
    2012-05-05
  • PHPMyAdmin 快速配置方法

    PHPMyAdmin 快速配置方法

    今天想提一下如何配置PHPMyAdmin,因?yàn)樵陂_發(fā)者,是比較普遍用到的。
    2009-05-05
  • 常用的PHP加密解密函數(shù)分享

    常用的PHP加密解密函數(shù)分享

    項(xiàng)目中有時(shí)我們需要使用PHP將特定的信息進(jìn)行加密,也就是通過(guò)加密算法生成一個(gè)加密字符串,這個(gè)加密后的字符串可以通過(guò)解密算法進(jìn)行解密,本文給大家分享了一些比較經(jīng)典的PHP加密解密函數(shù)代碼,需要的朋友可以參考下
    2023-09-09
  • php生成xml簡(jiǎn)單實(shí)例代碼

    php生成xml簡(jiǎn)單實(shí)例代碼

    使用PHP DOMDocument創(chuàng)建動(dòng)態(tài)XML文件
    2009-12-12
  • PhpDocumentor 2安裝以及生成API文檔的方法

    PhpDocumentor 2安裝以及生成API文檔的方法

    phpDocumentor 2是一個(gè)可以分析php源代碼和注釋塊并生成文檔的程序。基于phpdocumentor 1和javadoc啟發(fā)而來(lái),它持續(xù)創(chuàng)新的使用了一些新技術(shù)和支持php的新特性。
    2014-05-05
  • 自己寫的兼容低于PHP 5.5版本的array_column()函數(shù)

    自己寫的兼容低于PHP 5.5版本的array_column()函數(shù)

    這篇文章主要介紹了自己寫的兼容低于PHP 5.5版本的array_column()函數(shù),array_column是PHP 5.5新增函數(shù),有時(shí)在低版本中也可能要用到,需要的朋友可以參考下
    2014-10-10

最新評(píng)論

淮阳县| 中阳县| 桓仁| 焦作市| 清丰县| 莆田市| 浪卡子县| 留坝县| 米泉市| 元氏县| 隆林| 和林格尔县| 涟源市| 钟山县| 萍乡市| 遂昌县| 汾阳市| 手机| 化德县| 黔西县| 吉安市| 绥滨县| 澄江县| 彭泽县| 华池县| 安阳县| 巴楚县| 宜章县| 鄂温| 崇州市| 祁门县| 丰台区| 资阳市| 松溪县| 亚东县| 开鲁县| 叙永县| 凤山市| 班戈县| 新晃| 台安县|