PHP   发布时间:2019-11-19  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了discuz Passport 通行证 整合笔记大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_262_0@太简单了,但时间长了,记不得,浪费我半小时找资料,深刻体会好记性不如烂笔头!!今天把Passport文挡贴上,防止以后忘记!!记住,网上找到自己需要的资料也要耗时间的!!!!!!

Passport 通行证 整合

第一篇:整合原理

请注意: 整合不成功可能造成的后果-----dz论坛无法登录,无法管理
解决办法:
第一步: 到dz的数据库表cdb_setTings 找到下面这几行修改为

setting.gif

(4.3 KB)
2006-9-30 13:59

第二步: 删除dz安装目录/forumdata/cache/cache_setTings.php
第三步: 重新访问论坛

登陆和注册整合流程


用户从登陆或注册表单提交帐号密码信息 ==>
主站程序检验用户登陆或注册,成功(注册需要生成新用户)则 ==>
设置主站自身的cookie或session ==>
url传递 返回地址forWARD和编码后的用户信息和其他信息 到dz/api/passport.php
整合之前请先仔细阅读官方passport技术文档: http://www.discuz.net/usersguide/advanced_passport.htm
复制内容到剪贴板
代码:
php
//该文档保存为login.php
//首先将接口技术文档里的加密解密函数拷贝
//为了不让代码太乱,我拷贝到文档的结尾处
//假设自己的用户数据库表里用户名字段为UserName,密码字段为Pwd,Email字段为 Email
//注册页实现方法差不多,可自行实现,疑问加我QQ:2666556$act=(isset($_GET['act']))?$_GET['act']:"login";
if(function_exists($act)) $act();else login(); function login()
{
$ErrMsg=Usercheck();
if($ErrMsg!="")echo $ErrMsg;
//后面加上显示你的登陆表单的代码 如
?>

用户名:
密码:

php}//end functionfunction logout()//登出
{
$passportkey="1234567890";//这里换成你论坛通行证设置的passportkey
$auth=$_COOKIE['auth'];
setcookie("auth","",time() - 3600);
$forWARD=$_GET['forWARD'];
if($forWARD=="")$forWARD="../../index.php";//这里换成你的主页绝对地址或相对地址
$verify = md5('logout'.$auth.$forWARD.$passportkey);
$auth=rawurlencode($auth);
$forWARD=rawurlencode($forWARD);
header("LOCATIOn: bbs/api/passport.php?action=logout&auth=$auth&forWARD=$forWARD&verify=$verify");
}function Usercheck()
{
$passportkey="1234567890";//这里换成你论坛通行证设置的passportkey //===========验证输入=====================
if(!isset($_POST['submit'])) return; // login表单的按钮需要与此同名
$usnm=$_POST['username'];//username换成你登陆表单里的用户名域
$pwd=$_POST['password'];//password换成你登陆表单里的密码域
if($usnm=="") return "请输入用户名!";
if($pwd=="") return "请输入密码!"; //=========数据库处理==========================
$db=mysql_connect("localhost","root","");
mysql_SELEct_db("your_db_name");
$sql="SELEct * from `user` where UserName='".$usnm."' Limit 1";
$rs = mysql_query($sql,$db) ;
$row = mysql_fetch_array($rs);
if(!$row)return "该用户不存在";
if($row["Pwd"]!=md5($pwd))return "密码错误";
mysql_free_result($rs); //==============header到bbs=====================
$member = array
(
'time' => time(),
'username' => $row["UserName"],
'password' => $row["Pwd"],
'email' => $row["Email"]
);
$auth = passport_encrypt(passport_encode($member),$passportkey);
setcookie("auth",$auth,($_POST["Cookie"]? time()+(int)$_POST["Cookie"] :0));
$forWARD=$_POST['forWARD'];
if($forWARD=="")$forWARD="../../index.php";
$verify = md5('login'.$auth.$forWARD.$passportkey);
$auth=rawurlencode($auth);
$forWARD=rawurlencode($forWARD);
header("LOCATIOn: bbs/api/passport.php?action=login&auth=$auth&forWARD=$forWARD&verify=$verify"); }
//=============================================================
//=============以下为拷贝过来的函数============================
function passport_encrypt($txt,$key) {
srand((doublE)microtime() * 1000000);
$encrypt_key = md5(rand(0,32000));
$ctr = 0;
$tmp = '';
for($i = 0; $i < strlen($txt); $i++) {
$ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;
$tmp .= $encrypt_keY[$ctr].($txt[$i] ^ $encrypt_keY[$ctr++]);
}
return base64_encode(passport_key($tmp,$key));
}function passport_decrypt($txt,$key) {
$txt = passport_key(base64_decode($txt),$key);
$tmp = '';
for ($i = 0; $i < strlen($txt); $i++) {
$tmp .= $txt[$i] ^ $txt[++$i];
}
return $tmp;
}function passport_key($txt,$encrypt_key) {
$encrypt_key = md5($encrypt_key);
$ctr = 0;
$tmp = '';
for($i = 0; $i < strlen($txt); $i++) {
$ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;
$tmp .= $txt[$i] ^ $encrypt_keY[$ctr++];
}
return $tmp;
}function passport_encode($array) {
$arrayenc = array();
foreach($array as $key => $val) {
$arrayenc[] = $key.'='.urlencode($val);
}
return implode('&',$arrayenc);}
//=========================================================================
//===========================拷贝结束======================================
?>

大佬总结

以上是大佬教程为你收集整理的discuz Passport 通行证 整合笔记全部内容,希望文章能够帮你解决discuz Passport 通行证 整合笔记所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。