本人最近一直在搞DEDE和php论坛的整合,从网上找了很多的示例,但是都不是很理想,通行证的方法有的时候会出现在FireFox下没有问题而IE有问题的情况(不知道别人有没有出现这种情况)
今天下午终于搞定,用了一个网上的所谓的不用通行证的方法,实际上还是要开通通行证的。
本人使用的是DedeCms V5和Discuz V6.0
涉及的文件如下:
今天下午终于搞定,用了一个网上的所谓的不用通行证的方法,实际上还是要开通通行证的。
本人使用的是DedeCms V5和Discuz V6.0
涉及的文件如下:
dz6_passpor.php
index_do.php
inc_memberlogin.php
login.htm(可选,非必须覆盖文件)
安装方法:
index_do.php 请覆盖站点文件夹 /member/
dz6_passpor.php 请放入站点文件夹 /include/
inc_memberlogin.php 请覆盖站点文件夹 /include/
login.htm 请覆盖 /member/templets/login.htm
文件设置:修改dz6_passpor.php 文件内 第4 第5行
$bbspath="http://www.abc.cn/bbs"; //修改引号内为 论坛存放网站路径
$mysite="http://www.abc.cn/"; //修改引号内为 dede网站存放路径
dedecms设置:
进入dedecms后台关闭 通行证(默认是关闭的),进入“系统设置”-》“核心设置” 记下 “cookie加密码:“ 如:MjABy1618X
注意这个将填写到discuz后台的通行证私有密匙。
discuz设置:
进入 dz论坛后台,“扩展设置”-》通行证设置,启用通行证:是,并设置。
设置方法:
应用程序 URL 地址: http://www.abc.cn/ (这个改成你的 dedecms网址,应该和上面”dede网站存放路径“一致,注意的是“http://”和URL中最后的“/”)一定要记得加上
通行证私有密匙:填写dede自动生成的cookie加密码,如MjABy1618X
应用程序注册地址: member/index_do.php?fmdo=user&dopost=regnew
应用程序登录地址: member/login.php
应用程序退出地址: member/index_do.php?fmdo=login&dopost=exit
【utf-8】注册验证用户名解决方法
打开 member/templets/reg_new.htm
在13行处找到:
myajax.SendGet2("index_do.php?userid=" + document.form2.userid.value+"&fmdo=user&dopost=checkuser");
替换为:
myajax.SendGet2("index_do.php?userid=" + escape(document.form2.userid.value) +"&fmdo=user&dopost=checkuser");
如果想让登陆后返回登陆前的原页面,需要做如下修改:【已有现成】
修改的文件:/member/templets/login.htm
在41行找到
<input type="hidden" name="gourl" value="<?php if(!empty($gourl)) echo $gourl;?>">
替换为:
<input type="hidden" name="gourl" value="<?php if(!empty($forward)) echo $forward;?>">
不能贴附件,不过要改基本上都是这些了
dz6_passpor.php:
我的都是用的UTF-8的,使用GBK的要注意转换的
index_do.php
inc_memberlogin.php
login.htm(可选,非必须覆盖文件)
安装方法:
index_do.php 请覆盖站点文件夹 /member/
dz6_passpor.php 请放入站点文件夹 /include/
inc_memberlogin.php 请覆盖站点文件夹 /include/
login.htm 请覆盖 /member/templets/login.htm
文件设置:修改dz6_passpor.php 文件内 第4 第5行
$bbspath="http://www.abc.cn/bbs"; //修改引号内为 论坛存放网站路径
$mysite="http://www.abc.cn/"; //修改引号内为 dede网站存放路径
dedecms设置:
进入dedecms后台关闭 通行证(默认是关闭的),进入“系统设置”-》“核心设置” 记下 “cookie加密码:“ 如:MjABy1618X
注意这个将填写到discuz后台的通行证私有密匙。
discuz设置:
进入 dz论坛后台,“扩展设置”-》通行证设置,启用通行证:是,并设置。
设置方法:
应用程序 URL 地址: http://www.abc.cn/ (这个改成你的 dedecms网址,应该和上面”dede网站存放路径“一致,注意的是“http://”和URL中最后的“/”)一定要记得加上
通行证私有密匙:填写dede自动生成的cookie加密码,如MjABy1618X
应用程序注册地址: member/index_do.php?fmdo=user&dopost=regnew
应用程序登录地址: member/login.php
应用程序退出地址: member/index_do.php?fmdo=login&dopost=exit
【utf-8】注册验证用户名解决方法
打开 member/templets/reg_new.htm
在13行处找到:
myajax.SendGet2("index_do.php?userid=" + document.form2.userid.value+"&fmdo=user&dopost=checkuser");
替换为:
myajax.SendGet2("index_do.php?userid=" + escape(document.form2.userid.value) +"&fmdo=user&dopost=checkuser");
如果想让登陆后返回登陆前的原页面,需要做如下修改:【已有现成】
修改的文件:/member/templets/login.htm
在41行找到
<input type="hidden" name="gourl" value="<?php if(!empty($gourl)) echo $gourl;?>">
替换为:
<input type="hidden" name="gourl" value="<?php if(!empty($forward)) echo $forward;?>">
不能贴附件,不过要改基本上都是这些了
dz6_passpor.php:
$val) {
// $arrayenc 数组增加一个元素,其内容为 "$key=经过 urlencode() 后的 $val 值"
$arrayenc[] = $key.'='.urlencode($val);
}
// 返回以 "&" 连接的 $arrayenc 的值(implode),例如 $arrayenc = array('aa', 'bb', 'cc', 'dd'),
// 则 implode('&', $arrayenc) 后的结果为 ”aa&bb&cc&dd"
return implode('&', $arrayenc);
}
?>inc_memberlogin.php:GetOne("select sum(filesize) as fs From #@__uploads where memberID='$uid'; ");
return $row['fs'];
}
function CheckUserSpace($uid){
global $cfg_mb_max,$dsql;
if(!is_object($dsql)) $dsql = new DedeSql(false);
$hasuse = GetUserSpace($uid,$dsql);
$maxSize = $cfg_mb_max * 1024 * 1024;
if($hasuse >= $maxSize){
$dsql->Close();
ShowMsg('你的空间已满,不允许上传新文件!','-1');
exit();
}
}
//检测用户的附件类型
function CheckAddonType($aname){
global $cfg_mb_mediatype;
if(empty($cfg_mb_mediatype)){
$cfg_mb_mediatype = "jpg|gif|png|bmp|swf|mpg|mp3|rm|rmvb|wmv|asf|wma|zip|rar|doc|xsl|ppt|wps";
}
$anames = explode('.',$aname);
$atype = $anames[count($anames)-1];
if(count($anames)==1) return false;
else{
$atype = strtolower($atype);
$cfg_mb_mediatypes = explode('|',trim($cfg_mb_mediatype));
if(in_array($atype,$cfg_mb_mediatypes)) return true;
else return false;
}
}
$GLOBALS['MemberAreas'] = Array();
//获取省份信息
function GetProvince($pid,$dsql){
global $dsql,$MemberAreas;
if($pid<=0) return "未知";
else{
if(isset($MemberAreas[$pid])) return $MemberAreas[$pid];
$dsql->SetQuery("Select `id`,`name` From #@__area ");
$dsql->Execute('eee');
while($row = $dsql->GetObject('eee')){
$MemberAreas[$row->id] = $row->name;
}
if(isset($MemberAreas[$pid])) return $MemberAreas[$pid];
else return "未知";
}
}
//获取用户的会话信息
function GetUserInfos($uid)
{
$tpath = ceil($uid/5000);
$userfile = dirname(__FILE__)."/../data/cache/user/$tpath/{$uid}.php";
if(!file_exists($userfile)) return '';
else{
require_once($userfile);
return $cfg_userinfos;
}
}
//写入用户的会话信息
function WriteUserInfos($uid,$row)
{
$tpath = ceil($uid/5000);
$ndir = dirname(__FILE__)."/../data/cache/user/$tpath/";
if(!is_dir($ndir)){
mkdir($ndir,$GLOBALS['cfg_dir_purview']);
chmod($ndir,$GLOBALS['cfg_dir_purview']);
}
$userfile = $ndir.$uid.'.php';
$infos = "<"."?php/r/n";
$infos .= "/$cfg_userinfos['wtime'] = '".mytime()."';/r/n";
foreach($row as $k=>$v){
if(ereg('[^0-9]',$k)){
$v = str_replace("'","//'",$v);
$v = ereg_replace("(</?|/?>)","",$v);
if(in_array($k, array('userid','uname','pwd'))){
$infos .= "/$cfg_userinfos['{$k}'] = ".'base64_decode("'.base64_encode($v)."/");/r/n";
}else{
$infos .= "/$cfg_userinfos['{$k}'] = '{$v}';/r/n";
}
}
}
$infos .= "/r/n?".">";
@$fp = fopen($userfile,'w');
@flock($fp);
@fwrite($fp,$infos);
@fclose($fp);
return $infos;
}
//删除用户的会话信息
function DelUserInfos($uid)
{
$tpath = ceil($uid/5000);
$userfile = dirname(__FILE__)."/../data/cache/user/$tpath/".$uid.'.php';
if(file_exists($userfile)) @unlink($userfile);
}
//------------------------
//网站会员登录类
//------------------------
class MemberLogin
{
var $M_ID;
var $M_LoginID;
var $M_Type;
var $M_utype;
var $M_Money;
var $M_UserName;
var $M_MySafeID;
var $M_LoginTime;
var $M_KeepTime;
var $M_UserPwd;
var $M_UpTime;
var $M_ExpTime;
var $M_HasDay;
var $M_Scores;
var $M_Honor;
var $M_Newpm;
var $M_Email;////haha123_0添加整合discuz6
//php5构造函数
function __construct($kptime = 0)
{
if(empty($kptime)) $this->M_KeepTime = 3600 * 24 * 15;
else $this->M_KeepTime = $kptime;
$this->M_ID = $this->GetNum(GetCookie("DedeUserID"));
$this->M_LoginTime = GetCookie("DedeLoginTime");
if(empty($this->M_LoginTime)) $this->M_LoginTime = time();
if(empty($this->M_ID))
{
$this->ResetUser();
}else
{
$this->M_ID = ereg_replace("[^0-9]","",$this->M_ID);
//读取用户缓存信息
$row = GetUserInfos($this->M_ID);
//如果不存在就更新缓存
if(!is_array($row) && $this->M_ID>0) $row = $this->FushCache();
//存在用户信息
if(is_array($row))
{
$this->M_LoginID = $row['userid'];
$this->M_UserPwd = $row['pwd'];
$this->M_Type = $row['membertype'];
$this->M_utype = $row['type'];
$this->M_Money = $row['money'];
$this->M_UserName = $row['uname'];
$this->M_UpTime = $row['uptime'];
$this->M_ExpTime = $row['exptime'];
$this->M_Scores = $row['scores'];
$this->M_Honor = $row['honor'];
$this->M_Newpm = $row['newpm'];
$this->M_HasDay = 0;
$this->M_Email = $row['email'];//haha123_0添加整合discuz6
if($this->M_UpTime>0)
{
$nowtime = time();
$mhasDay = $this->M_ExpTime - ceil(($nowtime - $this->M_UpTime)/3600/24) + 1;
$this->M_HasDay = $mhasDay;
}
}else
{
$this->ResetUser();
}
}
}
function MemberLogin($kptime = 0){
$this->__construct($kptime);
}
//更新缓存
function FushCache($mid=0)
{
if(empty($mid)) $mid = $this->M_ID;
$dsql = new DedeSql(false);
$row = $dsql->GetOne("Select ID,userid,pwd,type,uname,membertype,money,uptime,exptime,scores,newpm From #@__member where ID='{$mid}' ");
if(is_array($row))
{
$scrow = $dsql->GetOne("Select titles From #@__scores where integral<={$row['scores']} order by integral desc");
$row['honor'] = $scrow['titles'];
}
if(is_array($row)) return WriteUserInfos($mid,$row);
else return '';
}
//退出cookie的会话
function ExitCookie(){
DelUserInfos($this->M_ID);
$this->ResetUser();
}
//验证用户是否已经登录
function IsLogin(){
if($this->M_ID > 0) return true;
else return false;
}
//重置用户信息
function ResetUser(){
$this->M_ID = 0;
$this->M_LoginID = "";
$this->M_Type = -1;
$this->M_utype = 0;
$this->M_Money = 0;
$this->M_UserName = "";
$this->M_LoginTime = 0;
$this->M_UpTime = 0;
$this->M_ExpTime = 0;
$this->M_HasDay = 0;
$this->M_Scores = 0;
$this->M_Newpm = 0;
$this->M_Email = "";//haha123_0添加整合discuz6
DropCookie("DedeUserID");
DropCookie("DedeLoginTime");
}
//获取整数值
function GetNum($fnum){
$fnum = ereg_replace("[^0-9/.]","",$fnum);
return $fnum;
}
//用户登录
function CheckUser($loginuser,$loginpwd)
{
$loginuser = ereg_replace("[;%'///?/*/$]","",$loginuser);
$dsql = new DedeSql(false);
$row = $dsql->GetOne("Select ID,pwd From #@__member where userid='$loginuser' ");
if(is_array($row)) //用户存在
{
//密码错误
if($row['pwd'] != $loginpwd){ return -1; }
else{ //成功登录
$dsql->ExecuteNoneQuery("update #@__member set logintime='".mytime()."',loginip='".GetIP()."' where ID='{$row['ID']}';");
$dsql->Close();
$this->PutLoginInfo($row['ID']);
$this->FushCache();
return 1;
}
}else{ //用户不存在
return 0;
}
}
//保存用户cookie
function PutLoginInfo($uid){
$this->M_ID = $uid;
$this->M_LoginTime = mytime();
PutCookie("DedeUserID",$uid,$this->M_KeepTime);
PutCookie("DedeLoginTime",$this->M_LoginTime,$this->M_KeepTime);
}
//获得会员目前的状态
function GetSta($dsql)
{
$sta = "";
if($this->M_Type==0) $sta .= "你目前的身份是:未审核会员 ";
else{
$row = $dsql->GetOne("Select membername From #@__arcrank where rank='".$this->M_Type."'");
$sta .= "你目前的身份是:".$row['membername'];
if($this->M_Type>10){
$sta .= " 剩余天数: ".$this->M_HasDay." 天 ";
}
}
$sta .= " 你目前拥有金币:".$this->M_Money." 个。";
return $sta;
}
}
?>index_do.php: 用户名含有非法字符! ";
}else{
$dsql = new DedeSql(false);
$dsql->SetQuery("Select ID From #@__member where userid='$userid'");
$dsql->Execute();
$rowcount = $dsql->GetTotalRow();
$dsql->Close();
if($rowcount>0){ $msg = "用户名 [$userid],已经被人使用,请使用其它用户名。"; }
else{ $msg = "用户名 [$userid],可以正常使用。"; }
}
echo $msg;
exit();
}
/*
新用户注册
function AUserReg()
*/
else if($dopost=="regnew")
{
if($cfg_pp_isopen==1 && $cfg_pp_regurl!=''){
header("Location:{$cfg_pp_regurl}");
exit();
}
require_once(dirname(__FILE__)."/reg_new.php");
exit();
}
else if($dopost=="regok")
{
if($cfg_pp_isopen==1 && $cfg_pp_regurl!=''){
header("Location:{$cfg_pp_regurl}");
exit();
}
$svali = GetCkVdValue();
if(strtolower($vdcode)!=$svali || $svali==""){
ShowMsg("验证码错误!","-1");
exit();
}
$userid = trim($userid);
$pwd = trim($userpwd);
$pwdc = trim($userpwdok);
if(!TestStringSafe($userid)||!TestStringSafe($pwd))
{
ShowMsg("你的用户名或密码不合法!","-1");
exit();
}
if(strlen($userid)<3||strlen($pwd)<3){
ShowMsg("你的用户名或密码小于三位,不允许注册!","-1");
exit();
}
if(strlen($userid)>24||strlen($pwd)>24){
ShowMsg("你的用户名或密码长度不能超过24位!","-1");
exit();
}
if($pwdc!=$pwd){
ShowMsg("你两次输入的密码不一致!","-1");
exit();
}
$dsql = new DedeSql(false);
//会员的默认金币
$dfrank = $dsql->GetOne("Select money From #@__arcrank where rank='10' ");
if(is_array($dfrank)) $dfmoney = $dfrank['money'];
else $dfmoney = 0;
$dsql->SetQuery("Select ID From #@__member where userid='$userid'");
$dsql->Execute();
$rowcount = $dsql->GetTotalRow();
if($rowcount>0){
$dsql->Close();
ShowMsg("你指定的用户名已存在,请使用别的用户名!","-1");
exit();
}
$uname = eregi_replace("['/"/$ /r/n/t;<>/*%/?]", '', $uname);
$pwd = GetEncodePwd($pwd);
$jointime = mytime();
$logintime = mytime();
$joinip = GetIP();
$loginip = GetIP();
//设置可选注册项目的默认值
$dfregs['birthday_y'] = '0000';
$dfregs['birthday_m'] = '00';
$dfregs['birthday_d'] = '00';
$dfregs['birthday'] = '0000-00-00';
$dfregs['weight'] = '0';
$dfregs['height'] = '0';
$dfregs['job'] = '';
$dfregs['province'] = '0';
$dfregs['city'] = '0';
$dfregs['myinfo'] = '';
$dfregs['tel'] = '';
$dfregs['type'] = 0;
$dfregs['oicq'] = '';
$dfregs['homepage'] = '';
$dfregs['address'] = '';
$dfregs['spacename'] = '';
$dfregs['showaddr'] = '0';
foreach($dfregs as $k=>$v){
if(!isset($$k)) $$k = $v;
}
$membertype = 10;
if($cfg_member_regsta == 'Y'){
$membertype = 0;
}
if($type == 1){
if(trim($comname) == ''){
ShowMsg("公司用户必须填写公司名称","-1");
exit();
}
$comname = htmlEncode(trim($comname));
}else{
$type = 0;
}
if(empty($spacename) && !empty($comname)) $spacename = $comname;
if(empty($spacename)) $spacename = $uname.'的个人空间';
$birthday = GetAlabNum($birthday_y)."-".GetAlabNum($birthday_m)."-".GetAlabNum($birthday_d);
if($birthday=='0-0-0'){
$birthday = '0000-00-00';
}
$height = GetAlabNum($height);
$inQuery = "
INSERT INTO `#@__member` (`userid` , `pwd` , `type` , `uname` , `membertype` , `uptime` , `exptime` ,
`money` , `email` , `jointime` , `joinip` , `logintime` , `loginip` ,
`c1` , `c2` , `c3` , `matt` , `guestbook` , `spaceshow` , `pageshow` , `spacestyle` ,
`spacename` , `spaceimage` , `news` , `mybb` , `listnum` , `scores` )
VALUES ('$userid', '$pwd', '$type', '$uname', '$membertype', '0', '0',
'0', '$email', '$jointime', '$joinip', '$jointime', '$joinip',
'0', '0', '0', '0', '0', '0', '0', '',
'$spacename', '', '', '', '20', '{$cfg_df_score}')
";
if($dsql->ExecuteNoneQuery($inQuery))
{
$id = $dsql->GetLastID();
if($type == 1)
{
$inQuery = "INSERT INTO #@__member_cominfo(id, comname) VALUES ('$id', '$comname');";
$dsql->ExecuteNoneQuery($inQuery);
}
else
{
$inQuery = "
INSERT INTO `#@__member_perinfo` (`id`, `uname` , `sex` , `birthday` , `weight` ,`height` , `job` , `province` , `city` , `myinfo` ,
`tel` , `oicq` , `homepage` , `showaddr` ,`address` , `fullinfo`)
VALUES ('$id','$uname', '$sex', '$birthday', '$weight','$height', '$job', '$province', '$city', '$myinfo' ,
'$tel' , '$oicq' , '$homepage' ,'$showaddr','$address','');";
$dsql->ExecuteNoneQuery($inQuery);
}
/* 添加 discuz6整合 通行证 注册 */
if ($sex=="男"){
$gender=1;
}elseif($sex=="女"){
$gender=2;
}else{
$gender=0;
}
$member = array(
'cookietime'=> 31536000,
'time'=> date("U"),
'username'=> $userid,
'password'=>$pwd,
'email'=> $email,
'credits'=>0,
'regip'=> get_client_ip(),/*$_SERVER["REMOTE_ADDR"],*/
'regdate'=> date("U"),
'msn'=> $email,
'gender'=>$gender,
'nickname'=>$uname
);
$action= 'login';
$auth = passport_encrypt(passport_encode($member), $passport_key);
$dsql->Close();
$ml = new MemberLogin();
$rs = $ml->CheckUser($userid,$pwd);
if($rs==1)
{
if($type == 1){
$forward=$mysite."member/mycominfo.php";
$verify = md5($action.$auth.$forward.$passport_key);
$trun_str=$bbspath."/api/passport.php".
"?action=$action".
"&auth=".rawurlencode($auth).
"&forward=".rawurlencode($forward).
"&verify=$verify";
echo "";
exit();
}
$forward=$mysite."member/control.php";
$verify = md5($action.$auth.$forward.$passport_key);
$trun_str=$bbspath."/api/passport.php".
"?action=$action".
"&auth=".rawurlencode($auth).
"&forward=".rawurlencode($forward).
"&verify=$verify";
echo "";
exit();
}else
{
$forward=$mysite."member/login.php";
$verify = md5($action.$auth.$forward.$passport_key);
$trun_str=$bbspath."/api/passport.php".
"?action=$action".
"&auth=".rawurlencode($auth).
"&forward=".rawurlencode($forward).
"&verify=$verify";
echo "";
exit();
}
}else
{
echo $dsql->GetError();
$dsql->Close();
ShowMsg("注册失败,请检查资料是否有误或与管理员联系!","javascript:;");
exit();
}
}
/*
更改用户资料
function AEditUser()
*/
else if($dopost=="editUserSafe")
{
if($cfg_pp_isopen==1 && $cfg_pp_editsafeurl!=''){
header("Location:{$cfg_pp_editsafeurl}");
exit();
}
CheckRank(0,0);
$svali = GetCkVdValue();
if(strtolower($vdcode)!=$svali || $svali==""){
ShowMsg("验证码错误!","-1");
exit();
}
if($oldpwd==""){
ShowMsg("你没有填写你的旧密码!","-1");
exit();
}
$pwd = trim($userpwd);
$pwdc = trim($userpwdok);
if($pwd!=""){
if(strlen($pwd)>24){
ShowMsg("密码长度不能超过24位!","-1");
exit();
}
if(!TestStringSafe($pwd)){
ShowMsg("你的新密码含有非法字符!","-1");
exit();
}
if($pwdc!=$pwd){
ShowMsg("你两次输入的密码不一致!","-1");
exit();
}
}else{
ShowMsg("你没有设置要更改的密码!","-1");
exit();
}
$dsql = new DedeSql(false);
$row = $dsql->GetOne("Select pwd From #@__member where ID='".$cfg_ml->M_ID."'");
$oldpwd = GetEncodePwd($oldpwd);
if(!is_array($row)||$row['pwd']!=$oldpwd){
$dsql->Close();
ShowMsg("你输入的旧密码错误!","-1");
exit();
}
$pwd = GetEncodePwd($pwd);
$query = "update #@__member set pwd = '$pwd' where ID='".$cfg_ml->M_ID."'";
$dsql->ExecuteNoneQuery($query);
ShowMsg("成功更改你的密码!","-1");
exit();
}
else if($dopost=="editUser")
{
CheckRank(0,0);
$svali = GetCkVdValue();
if(strtolower($vdcode)!=$svali || $svali==""){
ShowMsg("验证码错误!","-1");
exit();
}
$query1 = "
update #@__member set
email = '$email',uname = '$uname'
where ID='".$cfg_ml->M_ID."'
";
$query2 = "
update #@__member_perinfo set
uname = '$uname',
sex = '$sex',
birthday = '$birthday',
weight = '$weight',
height = '$height',
job = '$job',
province = '$province',
city = '$city',
myinfo = '$myinfo',
fullinfo = '$fullinfo',
showaddr = '$showaddr',
address = '$address',
oicq = '$oicq',
tel = '$tel',
homepage = '$homepage'
where ID='".$cfg_ml->M_ID."'
";
$dsql = new DedeSql(false);
$dsql->ExecuteNoneQuery($query1);
$dsql->ExecuteNoneQuery($query2);
$dsql->Close();
ShowMsg("成功更新你的个人资料!","edit_info.php");
exit();
}
/*
更改个人空间资料
function EditSpace()
*/
else if($dopost=="editSpace")
{
CheckRank(0,0);
$svali = GetCkVdValue();
if(strtolower($vdcode)!=$svali || $svali==""){
ShowMsg("验证码错误!","-1");
exit();
}
require_once("./inc/inc_archives_functions.php");
$title = "空间形象";
$spaceimage = GetUpImage('spaceimage',true,true,150,112,'myface');
if($spaceimage=="" && $oldimg!="" && $oldimg!="img/pview.gif"){
if(file_exists($cfg_basedir.$oldimg)){
$spaceimage = $oldimg;
}
}
$dsql = new DedeSql(false);
$news = addslashes(cn_substr(stripslashes($news),1024));
$news = eregi_replace("<(iframe|script|javascript)","",$news);
$spacename = ereg_replace("[><]","",$spacename);
$mybb = addslashes(html2text(stripslashes($mybb)));
$upquery = "Update #@__member set
spacename='$spacename',spaceimage='$spaceimage',news='$news',mybb='$mybb'
where ID='".$cfg_ml->M_ID."';
";
$ok = $dsql->ExecuteNoneQuery($upquery);
if($ok){
$dsql->Close();
ShowMsg("成功更新你的个人空间介绍!","space_info.php?".time().mt_rand(100,900));
exit();
}else{
$dsql->Close();
ShowMsg("更新资料失败!","space_info.php?".time().mt_rand(100,900));
exit();
}
}
//
break;
/*********************
function B_Login()
*******************/
case "login":
//
/*
用户登录
function BUserLogin()
*/
if($dopost=="login")
{
if($cfg_pp_isopen==1 && $cfg_pp_loginurl!=''){
header("Location:{$cfg_pp_loginurl}");
exit();
}
$svali = GetCkVdValue();
if(strtolower($vdcode)!=$svali || $svali==""){
ShowMsg("验证码错误!","-1");
exit();
}
if(!TestStringSafe($userid)||!TestStringSafe($pwd))
{
ShowMsg("用户名或密码不合法!","-1",0,2000);
exit();
}
if($userid==""||$pwd==""){
ShowMsg("用户名或密码不能为空!","-1",0,2000);
exit();
}
//检查帐号
$rs = $cfg_ml->CheckUser($userid,GetEncodePwd($pwd));
if($rs==0) {
ShowMsg("用户名不存在!","-1",0,2000);
exit();
}
else if($rs==-1){
ShowMsg("密码错误!","-1",0,2000);
exit();
}
else{
$dsql = new DedeSql(false);
$row = $dsql->GetOne("Select email,sex,uname From #@__member where ID='".$cfg_ml->M_ID."'");
$email=$row['email'];
$sex=$row['sex'];
$uname=$row['uname'];
$dsql->SetQuery("update #@__member set logintime='".mytime()."',loginip='".GetIP()."' where ID='".$cfg_ml->M_ID."'");
$dsql->ExecuteNoneQuery();
$dsql->Close();
/* 通行证 登陆 discuz6*/
if ($sex=="男"){
$gender=1;
}elseif($sex=="女"){
$gender=2;
}else{
$gender=0;
}
$member = array
(
'cookietime'=> 31536000,
'time'=> date("U"),
'username'=>trim($userid),
'password'=>md5($pwd),
'email'=> $email,
'credits'=> 0,
'regip'=> get_client_ip(),/*$_SERVER["REMOTE_ADDR"],*/
'regdate'=> date("U"),
'msn'=> $email,
'gender'=>$gender,
'nickname'=>$uname
);
$action= 'login';
$auth = passport_encrypt(passport_encode($member), $passport_key);
if(!isset($_GET["forward"])|| $_GET["forward"] == ""){
$mb_login_url = $gourl;
}else{
$mb_login_url=$_GET["forward"];
}
if(empty($mb_login_url)) $mb_login_url = $mysite."member/control.php";
$forward=$mb_login_url;
$verify = md5($action.$auth.$forward.$passport_key);
$trun_str=$bbspath."/api/passport.php".
"?action=$action".
"&auth=".rawurlencode($auth).
"&forward=".rawurlencode($forward).
"&verify=$verify";
echo "";
unset($member);
session_unregister('dz_forward');
exit();
}
}
/*
退出登录
function BUserExit()
*/
else if($dopost=="exit")
{
/*通行证 退出 discuz6*/
$member = array
(
'time'=>date("U"),
'username' => $cfg_ml->M_LoginID,
'password' =>$cfg_ml->M_UserPwd,
'email'=>$cfg_ml->M_Email
);
$action= 'logout';
$auth = passport_encrypt(passport_encode($member), $passport_key);
$cfg_ml->ExitCookie();
if($cfg_pp_isopen==1 && $cfg_pp_exiturl!=''){
echo "";
exit();
}
$cfg_ml->ExitCookie();
if(!isset($_GET["forward"])|| $_GET["forward"] == ""){
if(empty($cfg_mb_exiturl)) $cfg_mb_exiturl = $cfg_indexurl;
if(empty($cfg_mb_exiturl)) $cfg_mb_exiturl = '/';
}else{
$cfg_mb_exiturl=$_GET["forward"];
}
$forward=$cfg_mb_exiturl; //可以修改此处为会员退出后跳转的网址。默认是退出返回原页面。
$verify = md5($action.$auth.$forward.$passport_key);
$trun_str=$bbspath."/api/passport.php".
"?action=$action".
"&auth=".rawurlencode($auth).
"&forward=".rawurlencode($forward).
"&verify=$verify";
echo "";
unset($member);
/*通行证 退出 discuz6*/
}
/*
获取密码
function BUserGetPwd()
*/
else if($dopost=="getpwd")
{
if($cfg_pwdtype=='md5'){
ShowMsg("系统的密码被设置为单向加密,无法取回,请与管理员联系。","javascript:;");
exit();
}
$svali = GetCkVdValue();
if(strtolower($vdcode)!=$svali || $svali==""){
ShowMsg("验证码错误!","-1");
exit();
}
if(!ereg("(.*)@(.*)/.(.*)",$email)||!TestStringSafe($email)){
ShowMsg("邮箱地址格式不正确!","-1");
exit();
}
$dsql = new DedeSql(false);
$row = $dsql->GetOne("Select userid,pwd,uname,email From #@__member where email='$email'");
if(!is_array($row)){
$dsql->Close();
ShowMsg("系统找不到此邮箱地址!","-1");
exit();
}
$dsql->Close();
$mailtitle = "你在".$cfg_webname."的用户名和密码";
$mailbody = "/r/n用户名:'".$row['userid']."' 密码:'".$row['pwd']."'/r/n/r/n,
$cfg_powerby";
$headers = "From: ".$cfg_adminemail."/r/nReply-To: $cfg_adminemail";
sendmail($email, $mailtitle, $mailbody, $headers);
$gurl = explode("@",$email);
ShowMsg("成功发出你的用户名和密码,请注意查收!","login.php");
exit();
}
//
break;
}
function js_unescape($str)
{
$ret = '';
$len = strlen($str);
for ($i = 0; $i < $len; $i++)
{
if ($str[$i] == '%' && $str[$i+1] == 'u')
{
$val = hexdec(substr($str, $i+2, 4));
if ($val < 0x7f) $ret .= chr($val);
else if($val < 0x800) $ret .= chr(0xc0|($val>>6)).chr(0x80|($val&0x3f));
else $ret .= chr(0xe0|($val>>12)).chr(0x80|(($val>>6)&0x3f)).chr(0x80|($val&0x3f));
$i += 5;
}
else if ($str[$i] == '%')
{
$ret .= urldecode(substr($str, $i, 3));
$i += 2;
}
else $ret .= $str[$i];
}
return $ret;
}
?>discuz6.0的设置:我的都是用的UTF-8的,使用GBK的要注意转换的
本文详细介绍了如何实现DEDECMS V5与Discuz V6.0的整合,包括无需通行证的方法及具体步骤。涉及的文件包括dz6_passpor.php、index_do.php等。

3913

被折叠的 条评论
为什么被折叠?



