本文实例讲述了PHP简单实现单点登录功能。分享给大家供大家参考,具体如下:
1.准备两个虚拟域名
127.0.0.1 www.openpoor.com 127.0.0.1 www.myspace.com
2.在openpoor的根目录下创建以下文件
index.PHP
login.PHP
PHP;">
<Meta charset="UTF-8"/>
sync login
sync.PHP
PHP;">
<Meta charset="UTF-8"/>
3.在myspace的根目录下创建如下文件
slogin文件 完成session的设置
PHP;">
index.PHP
PHP;">
4.Des.PHP的文件内容如下
PHP;">
PHP
/**
*@see Yii CSecurityManager;
*/
class Des{
public static function encrypt($data,$key){
$module=mcrypt_module_open('des','',MCRYPT_MODE_CBC,'');
$key=substr(md5($key),mcrypt_enc_get_key_size($module));
srand();
$iv=mcrypt_create_iv(mcrypt_enc_get_iv_size($module),MCRYPT_RAND);
mcrypt_generic_init($module,$key,$iv);
$encrypted=$iv.mcrypt_generic($module,$data);
mcrypt_generic_deinit($module);
mcrypt_module_close($module);
return md5($data).'_'.base64_encode($encrypted);
}
public static function decrypt($data,$key){
$_data = explode('_',$data,2);
if(count($_data)<2){
return false;
}
$data = base64_decode($_data[1]);
$module=mcrypt_module_open('des',mcrypt_enc_get_key_size($module));
$ivSize=mcrypt_enc_get_iv_size($module);
$iv=substr($data,$ivSize);
mcrypt_generic_init($module,$iv);
$decrypted=mdecrypt_generic($module,substr($data,$ivSize,strlen($data)));
mcrypt_generic_deinit($module);
mcrypt_module_close($module);
$decrypted = rtrim($decrypted,"\0");
if($_data[0]!=md5($decrypted)){
return false;
}
return $decrypted;
}
}
?>
当在openpoor登录后将session信息传到其他域名下的文件下进行处理,以script标签包含的形式进行运行。
5.此时访问www.openpoor.com和www.myspace.com都是未登录状态
到此我们实现了一个简单的单点登录。
更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》及《PHP数学运算技巧总结》
希望本文所述对大家PHP程序设计有所帮助。
原文链接:https://www.f2er.com/php/16234.html